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