xmllint未知选项'--xpath'

时间:2012-08-15 19:27:26

标签: xpath xmllint

我在几个地方看过这种语法(例如,here):

xmllint --xpath '/plist/array/string/text()' tmp.xml,用于使用xpath选择器查询特定的XML节点。但是,当我尝试在我的机器上执行此操作时,我收到错误Unknown option --xpath(mac os x snow leopard)。

仔细查看xmllint的手册页,我没有看到--xpath选项记录...

我在这里完全错过了什么?

4 个答案:

答案 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