【发布时间】:2009-07-23 03:13:37
【问题描述】:
我们有一个 XML 文件,其中有一个非常简单的 XLink 实现:
<root xmlns:xlink="http://www.w3.org/1999/xlink">
<firstChild id="ID1" />
...
<ref xlink:href="#ID1" />
</root>
让我们假设 XLink 实现不会比这更复杂。然而,重要的一点是引用的元素(在本例中为 firstChild)可以出现在文档中的任何位置,层次结构中的任何位置。
在 XPath 查找中,您可以使用如下表达式找到 节点引用的元素:
//*[@id='ID1']
使用LINQ to 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 对我来说仍然只有几天的历史......它很棒,但我想知道它是否对某些操作有效率限制。
【问题讨论】:
标签: .net xml linq xpath linq-to-xml