在plist文件中,如何通过xmlstarlet工具提取唯一键标记后的字符串文本
我想通过查询plistxml文件。我正在查找唯一的在plist文件中,如何通过xmlstarlet工具提取唯一键标记后的字符串文本,xml,xpath,plist,xmlstarlet,Xml,Xpath,Plist,Xmlstarlet,我想通过查询plistxml文件。我正在查找唯一的键标记后面的字符串标记的文本。XML文件可能看起来像 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict>
键
标记后面的字符串
标记的文本。XML文件可能看起来像
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>15B42</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
.
.
.
</dict>
</plist>
但我没有得到任何输出。我的XPath是否错误,或者我是否必须为xmlstarlet
指定其他参数?您可以这样尝试:
//key[.='CFBundleDevelopmentRegion']/following-sibling::string[1]
XPath将在XML文档中的任何位置找到key
元素,其中的内容等于“CbundledevelopmentRegion”
,然后返回下面最近的同级string
元素
因此,xmlstarlet
的完整命令行如下所示:
xmlstarlet sel --net -t -v '//key[.="CFBundleShortVersionString"]/following-sibling::string[1]' myfile.plist
//key[.='CFBundleDevelopmentRegion']/following-sibling::string[1]
xmlstarlet sel --net -t -v '//key[.="CFBundleShortVersionString"]/following-sibling::string[1]' myfile.plist