我在几个地方看过这种语法(例如,here):
xmllint --xpath '/plist/array/string/text()' tmp.xml
,用于使用xpath选择器查询特定的XML节点。但是,当我尝试在我的机器上执行此操作时,我收到错误Unknown option --xpath
(mac os x snow leopard)。
仔细查看xmllint的手册页,我没有看到--xpath
选项记录...
我在这里完全错过了什么?
答案 0 :(得分:7)
xmllint --shell tmp.xml <<<'xpath /plist/array/string/text()'
如果你需要让xmllint读取stdin:
cat /tmp/tmp.xml | xmllint --shell <(cat) <<<'xpath /plist/array/string/text()'
答案 1 :(得分:6)
对于某些人来说,更新不是一种选择。 您必须使用由其他团队安装的给定版本,然后继续使用它。
你可以试试--shell:
xmllint --shell tmp.xml << EOF
'/plist/array/string/text()'
EOF
答案 2 :(得分:4)
啊,是的,一定是libxml2
过时版本的问题。
通过macports更新libxml2
(到v2.7.8
)似乎解决了这个问题。
答案 3 :(得分:1)
如果您想在Mac上的命令行中操作plist
个文件,请使用PlistBuddy
。
例如,您可以在shell脚本中执行此类操作:
BUNDLE_ID=`/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' Info.plist`
echo $BUNDLE_ID
功能非常强大,您可以添加/删除数组和词典中的项目,查找键控或索引值,复制/合并/导入其他文件等。有关完整信息,请参阅/usr/libexec/PlistBuddy -h
。