我们有一个非常简单的实现的XML文件的XLink :
<root xmlns:xlink="http://www.w3.org/1999/xlink">
<firstChild id="ID1" />
...
<ref xlink:href="#ID1" />
</root>
让我们假设XLink的实施不会得到任何比这更复杂。 然而,最重要的一点是,该元件称为(在这种情况下,则firstChild)可以在文档中出现的任何地方,在任何地方的层次结构。
在XPath查询你会发现通过使用如下的表达式由<REF>节点中提到的元件:
//*[@id='ID1']
什么是用最好的相当于LINQ到XML ? 我不得不沿着这些路线思想的东西:
XDocument doc = XDocument.Load("file.xml");
var dest = xDoc.Descendants().Where(e => (string)e.Attribute("id") == "ID1").SingleOrDefault();
我还没有实际测试过它。 但总的来说,如果XML文档是相当大的,是LINQ的方式将是低效的(因为它的使用上的XDocument所有后代的枚举)? 它会更好恢复到的XPathNavigator,只是使用XPath表达式?
如果这种事情是好的,在LINQ做,有没有比我写的更好的方法? LINQ仍然只有几天大,我...这是真棒,但我不知道是否有一定的操作效率的局限性。