我的XML看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<University>
<Colleges>
<College>
<Id> Cambridge </Id>
<Dept>
<Id> Arts</Id>
</Dept>
</College>
<College>
<Id> Oxford</Id>
<Dept>
<Id> Philosophy </Id>
</Dept>
</College>
</Colleges>
</University>
我想根据身份证件返回学院。在另一种情况下,我想写一下学院的Id。
我不明白如何编写LINQ语句来直接读取Id。我可以在每个阶段使用Descendants()
。但是如何选择XML结构内部的元素?
答案 0 :(得分:4)
也许你应该使用XPath。语法将比纯Linq查询简单:
using System.Xml;
using System.Xml.XPath;
...
public foo()
{
XElement yourNode = XElement.Parse(yourstring);
XElement college = root.XPathSelectElement("//College[Id='Oxford']");
}
如果您可以在结构中的多个位置放置College节点,则XPAth查询/University/Colleges/College[Id='OxFord']
将避免冲突问题。
答案 1 :(得分:3)
LINQ-XML,
XDocument doc = XDocument.Parse(xmlStr);
var results = doc.Root.Descendants("College")
.Where(ele => ele.Element("Id").Value.Trim() == "Oxford");