技术开发 频道

XLINQ : XML字面量和XML后期绑定


【IT168技术文档】

  XML 作为一种通用的,跨平台的数据交换格式,在程序界是公认的事实;而 .Net Framework 以前的版本中麻烦的 XML 操作,常常令程序员心生不快。记得以前试图生成一个 XML 文件,无非是两种模式:用 StringBuilder 拼接 XML 字符串,或者是用 XMLDocument / XMLWriter 进行 DOM 操作。StringBuilder 是有足够的速度,但是没有稳定性的保障,需要多次过滤以保护 XML 文件的完整性。而使用 MSXML 的包装 System.Xml 进行操作,又未免太麻烦了些。

  XML 字面量功能是 Visual Basic 9 为解放程序员劳力作出的一项非常大的改进,它可让程序员直接在代码中嵌入 XML 进行生成操作。借助编译器的力量,XML 字面量调用 System.Xml.Linq 进行 XML 的动态生成。在 C# 中,虽然同样可以调用这个命名空间下的类进行生成,但是远没有 Visual Basic 的模式轻松,省力。举一个简单的范例,用于动态生成一个 XML 文档:

  旧的 String Builder 模式:
Imports System.Text Public Function BuildXMLFromStringBuilder() Function BuildXMLFromStringBuilder(Name As String, Age As Integer) As String Dim XMLBuilder As New StringBuilder With XMLBuilder .AppendLine("<Person>") .Append("<Name>") .Append(Name) .AppendLine("</Name>") .Append("<Age>") .Append(Age) .AppendLine("</Age>") .AppendLine("</Person>") End With Return XMLBuilder.ToString() End Function
  旧的 XML DOM 模式:
Public Function BuildXMLFromXmlDom() Function BuildXMLFromXmlDom(ByVal Name As String, ByVal Age As Integer) As String Dim XMLDocument As New XmlDocument Dim RootElement As XmlElement = XMLDocument.CreateElement("Person") Dim NameElement As XmlElement = XMLDocument.CreateElement("Name") Dim AgeElement As XmlElement = XMLDocument.CreateElement("Age") With RootElement .AppendChild(NameElement) .AppendChild(AgeElement) End With With NameElement .Value = Name End With With AgeElement .Value = CStr(Age) End With XMLDocument.AppendChild(RootElement) Return XMLDocument.ToString() End Function
  新的 XML 字面量:
Public Function BuildXMLFromXLinq() Function BuildXMLFromXLinq(ByVal Name As String, ByVal Age As Integer) As String Return <Person> <Name><%= Name %></Name> <Age><%= Age %></Age> </Person>.ToString() End Function
0
相关文章