代码之家  ›  专栏  ›  技术社区  ›  Sergej Andrejev

我应该在.NET 4中使用什么XML操作组件?

  •  0
  • Sergej Andrejev  · 技术社区  · 14 年前

    我操纵原始XML已经很长时间了。我使用了xmldocument并记住了一个叫做xdocument的东西,它开始发展,但那是几年前的事了。这几天的建议是什么?

    提前谢谢

    2 回复  |  直到 14 年前
        1
  •  3
  •   Jon Skeet    14 年前

    XDocument 是linq-to-xml的一部分 一定地 这些天我将使用99%的XML工作。

    LINQtoXML听起来不太像-它不是一个真正的LINQprovider,就像LINQtoSQL那样,例如…它是一个XML API,设计用来很好地处理LinqTo对象。它支持一个声明性构造模型,它的查询非常适合于对象的LINQ,允许您很容易地找到元素、属性等。

    哦,它的名称空间支持非常简单:

    XNamespace ns = "http://some.url.here";
    XElement element = new XElement(ns + "elementName");
    

    基本上,它很可爱——在大多数情况下,它比使用xmldocument和xmlreader换成一顶鸭舌帽要好。偶尔地 XmlReader 可能对流效率很有用,但您可以创建一个 XElement 从一个 XMLRead ,它只读取“当前”元素并保留 XMLRead 在它后面。这就允许使用LinqtoXML的好处进行某种“结构化的流式处理”,只要一次只需要一个元素(当然也只需要任何子元素)。

    关于Eidylon的答案:C不支持XML文本;它认为一种语言不应该直接参与到XML等特定技术中。你认为这是一件多么重要的事情啊:)

        2
  •  1
  •   eidylon    14 年前

    哪种语言?在vb.net中,建议使用XML文本和相关的属性/方法。

    例如:

    Dim x = XElement.Parse("<some valid xml string>")
    Console.WriteLine(x.<someNode>.<someChild>.value)
    

    会写出根下somenode下somechild节点的值。 我不确定C是否具有相同的结构,能够直接查询这样的节点/属性。