23

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

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

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

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

4

4 回答 4

8
xmllint --shell tmp.xml <<<'xpath /plist/array/string/text()'

如果您需要使 xmllint 读取标准输入:

cat /tmp/tmp.xml | xmllint --shell <(cat) <<<'xpath /plist/array/string/text()'
于 2016-07-05T09:06:15.450 回答
6

对于某些人来说,更新不是一种选择。您必须使用由其他团队安装的给定版本,然后您就可以使用它。

你可以通过 --shell 试试:

xmllint --shell tmp.xml << EOF
'/plist/array/string/text()'
EOF
于 2015-05-04T14:30:45.123 回答
5

啊,是的,一定是过时版本的libxml2.

通过 macports更新libxml2(到v2.7.8)似乎已经解决了这个问题。

于 2012-08-15T19:41:41.437 回答
1

如果要plist在 Mac 上从命令行操作文件,请使用PlistBuddy.

例如,您可以在 shell 脚本中执行此类操作:

BUNDLE_ID=`/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' Info.plist`
echo $BUNDLE_ID

它非常强大,您可以在数组和字典中添加/删除项目,查找键值或索引值,复制/合并/导入其他文件等。查看/usr/libexec/PlistBuddy -h完整信息。

于 2013-01-09T12:03:29.563 回答