2011-03-02 223 views
0

嘛子值,这个人是我的XML文件的LINQ to 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. 

所以我的问题是,我怎么能得到中包含的子值也没有得到错误?您看到我很乐意将CopyDescr中包含的值加载到List of(String)以备后用......

在此先感谢!

+0

是的,你要使用XPath表达式,但这无关使用XPath。 – 2011-03-02 16:04:12

回答

0

啊哈!我刚刚找到它。 Descendants有窍门。

.CopyDescr = q.Descendants("Descr") 
0

您可以使用XPath:

q.XPathSelectElements("Copy/Descr") 

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

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