У меня есть XML-файл (Это файл ITunes) со следующим содержанием:C# XML Выберите словарь узла по ключевому значению
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Major Version</key><integer>1</integer>
<key>Minor Version</key><integer>1</integer>
<key>Application Version</key><string>12.3.3.17</string>
...
<key>Music Folder</key><string>file://localhost/C:/Users/username/longpath/</string>
</dict>
</plist>
Как я могу получить значение последней строки, где <key>
является " Музыкальная папка '?
Это действительно большой файл, поэтому я бы предпочел не перебирать все узлы.
Я пробовал некоторые из следующих действий:
XmlNode location = xmlDocument.SelectSingleNode("descendant::dict[key='Music Folder']");
location = xmlDocument.SelectSingleNode("//text()[.='Music Folder']");
location = xmlDocument.SelectSingleNode("string[last()]");
location = xmlDocument.SelectSingleNode("dict::string[last()]");
location = xmlDocument.SelectSingleNode("descendant::dict[string[last()]]");
Я не знаком с XPath выражений и возникают проблемы, делая правильное выражение.
Я также открыт для решений LINQ.
Если папка Музыка всегда последняя, будет '/ plist/dict // key [last()]/text()' работать? – pinkfloydx33