xmllint未知选项'--xpath'

Nea*_*nti 23 xpath xmllint

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

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

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

我在这里完全错过了一些东西吗?

小智 8

xmllint --shell tmp.xml <<<'xpath /plist/array/string/text()'
Run Code Online (Sandbox Code Playgroud)

如果你需要让xmllint读取stdin:

cat /tmp/tmp.xml | xmllint --shell <(cat) <<<'xpath /plist/array/string/text()'
Run Code Online (Sandbox Code Playgroud)


tro*_*mpa 6

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

你可以试试--shell:

xmllint --shell tmp.xml << EOF
'/plist/array/string/text()'
EOF
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@Trompa,这证明了使用旧的xmllint是可行的。我使用xmllint --shell命令'cat'在1行中提取了一个tomcat HTTP侦听器端口,因此:`echo“ cat //Connector[@protocol='org.apache.coyote.http11.Http11NioProtocol']/@port “ | xmllint --shell /apache-tomcat/conf/server.xml | awk -F \“'/ = / {打印$ 2;}'` (2认同)

Nea*_*nti 5

嗯,是的,一定是过时的版本存在问题libxml2

通过macports 更新libxml2(至v2.7.8)似乎已解决了该问题。

  • 如何更新libxml版本以支持--xpath选项 (7认同)