【问题标题】:Using LINQ to XML to read text from XML file使用 LINQ to XML 从 XML 文件中读取文本
【发布时间】:2010-11-17 06:23:50
【问题描述】:

我有一个这样的 XML 文件:

<Root>
   This is beginning of list of children.   
   <Children>
      <Child Name="a">A</Child>
      <Child Name="b">B</Child>
      <Child Name="c">C</Child>
   </Children>
   This is end of list of children. 
</Root>

我正在使用 LINQ to XML (XDocument) 来读取此文件。我需要的是根元素中的“文本”,“这是子列表的开头”。但是,当我检查引用 Root 的 XElement 的 Value 属性时,我得到以下信息:

这是孩子列表的开头。ABC这是孩子列表的结尾。

我做错了什么?

【问题讨论】:

    标签: c# xml c#-4.0 linq-to-xml


    【解决方案1】:

    如果您只想要第一个文本节点(忽略“这是子列表的结尾”,它仍然是根元素中的文本),您可以使用:

    var text = (string) doc.Root.Nodes()
                                .OfType<XText>()
                                .First()
                                .Value;
    

    请注意,这将包含空格,因此您可能需要修剪它。它还假设存在至少一个文本节点。

    【讨论】:

      【解决方案2】:
      var doc = XDocument.Parse(xml);
      var ele = doc.Element("Root");
      string whatUWant = ele.FirstNode.ToString();
      

      这可能满足您的要求。

      顺便说一句,Root.Value 表示节点“Root”的整个值,所以你得到了这样的结果。我猜。

      【讨论】:

      • 是的,你是对的,我没有意识到 Root.Value 意味着 Root 的整个值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多