LINQ to XML:获取元素的子值

时间:2011-03-02 09:47:31

标签: xml linq linq-to-xml anonymous-types

好吧,这个是我的XML文件

  <?xml version="1.0" encoding="utf-8"?>
<config>
  <setup>
    <Test>10</Test>
    <Copy>
      <Descr>AA</Descr>
      <Descr>BB</Descr>
    </Copy>
  </setup>
</config>

这个是我的LINQ查询:(

Dim query = From q In XElement.Load("\MyXml.xml").Elements("setup") _
            Where q.Element("Test").Value = "SomeValue" _
            Select New With {.Test = q.Element("Test").Value, _
                             .CopyDescr = q.Element("Copy/Descr").Value}

不幸的是,这个产生了以下直接错误。

The '/' character, hexadecimal value 0x2F, cannot be included in a name.

所以我的问题是,我怎样才能获得<Description>中包含的子值,而不会出现错误?您看,我很乐意将CopyDescr中包含的值加载到List of(String)以供日后使用...

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以使用XPath:

q.XPathSelectElements("Copy/Descr")

然而,这将返回元素列表。可能你需要以某种方式将它们连接在一起,所以你的代码将是:

.CopyDescr = String.Join( "," ,
   from qq in q.XPathSelectElements("Copy/Descr") select qq.Value
);

答案 1 :(得分:0)

啊哈!我刚发现它。 Descendants可以解决问题。

.CopyDescr = q.Descendants("Descr")