【发布时间】:2016-09-25 11:36:19
【问题描述】:
我有一个包含以下内容的 XML 文件(它是一个 iTunes 文件):
<?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()会起作用吗?
标签: c# xml linq itunes xmldocument