Я пытаюсь присоединиться к двум файлам XML, ключ соединения иногда приходит как элемент, но иногда приходит как атрибут, как в XML-файлах ниже. Как я могу использовать XPath или || оператора для решения проблемы? Любые другие решения также очень ценятся. Спасибо заранее!Как использовать xpath в Linq для проверки элементов и атрибутов
один файл:
<bookstore>
<book>
<bookID>100</bookID>
<name> The cat in the hat </name>
</book>
<book>
<bookID>90</bookID>
<name> another book </name>
</book>
<book>
<bookID>103</bookID>
<name> a new book </name>
</book>
</bookstore>
файл два, здесь джойн ключ BookID является атрибутом:
<bookstore>
<book bookID=100>
<content> story </content>
</book>
<book bookID=90>
<content> fiction </content>
</book>
<book bookID=103>
<content> bio </content>
</book>
В результате я хотел бы иметь это
<result>
<bookInfo>
<bookID>103</bookID>
<name> a new book </name>
<content> bio </content>
<bookInfo>
</result>
Моя текущая операция присоединения основана на этом вопросе Compare elements from two xml documents based on element value in C#
var bookInfos =
from a in fileone.Descendants("book")
join b in filetwo.Descendants("book")
on (string)a.Element("bookID") equals (string)b.Element("bookID") //how can I change the Join condition as the key might attributes in any of the two files?
select new XElement("bookInfo",
a.Element("bookID"),
a.Element("name"),
b.Element("content")
);