xmllint --xpath "//project" test.xml
fails on
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
</project>
</projects>
但如果我像这样删除 xmlns 属性就会成功:
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<project>
<modelVersion>4.0.0</modelVersion>
</project>
</projects>
这有什么问题吗? xmlns 在非顶级标签上合法吗?
我正在使用 Java Maven:
mvn help:effective-pom
并在非顶部元素上生成带有 xmlns 的 xml,如图所示。
最简单的解决方法是检查local-name()
:
xmllint --xpath "//*[local-name()='project']" test.xml
或者,定义一个命名空间并使用它:
echo -e 'setns ns=http://maven.apache.org/POM/4.0.0\ncat //ns:project' | xmllint --shell test.xml
另请参阅:
- xmllint 无法使用 xpath 正确查询 https://stackoverflow.com/questions/8264134/xmllint-failing-to-properly-query-with-xpath
- XPath 选择带有命名空间的节点 https://stackoverflow.com/questions/536441/xpath-namespace-driving-me-crazy
- xmllint 和命名空间 http://blog.yjl.im/2012/04/xmllint-and-namespace.html
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)