У нас есть файл XML с очень простой реализации XLink:Как реализовать простой XPath поиск
<root xmlns:xlink="http://www.w3.org/1999/xlink">
<firstChild id="ID1" />
...
<ref xlink:href="#ID1" />
</root>
Давайте предположим, что реализация XLink не получит какой-либо более сложным, чем это. Однако важным моментом является то, что упомянутый элемент (в данном случае firstChild) может появляться где угодно в документе, где угодно в иерархии.
В XPath Lookup можно найти элемент, упомянутый в < исх> узел, используя выражение типа:
//*[@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 мне все еще всего несколько дней ... Это потрясающе, но мне интересно, имеет ли он ограничения эффективности для определенных операций.
Именно то, что я искал :) –