У меня есть проект, в котором в настоящее время я реализую поддержку чтения значений из файла XML по произвольному / определяемому пользователем пути в ключах документа.
Например, если документ выглядит так:
<information>
<machine>
<foo></foo>
<name>
test machine
</name>
<bar>spam</bar>
</machine>
</information>
, тогда пользователь может захотеть получить значение с помощью клавиши name
в information/machine
.
Есть ли способ, используя XDocument
/ XPath
, чтобы я мог искать значения, которые хочет пользователь, не зная / не кодируя в схеме документа?
Моя первоначальная мысль заключалась в том, чтобы проработать документ с помощью формы рекурсивной функции, использующей элементы XElement
, но я чувствую, что должно быть более простое и понятное решение, которое не требует, чтобы я свернул свой собственный код поиска.
Я тоже что-то пробовал в этом направлении
var doc = XDocument.Load("C:\Path\to\XML\file.xml");
// Split the parent keys string
XElement elem = doc.Root.XPathSelectElement("path/to/key");
if (elem != null && elem.Attribute("wantedKeyName") != null)
replace = elem.Attribute("wantedKeyName").Value;
но elem
всегда равно нулю. Я предполагаю, что есть проблема с тем, как я определяю свой путь или использую XPathSelectElement, но я еще не решил это.