use*_*301 6 xml xpath maven xmllint
xmllint --xpath "//project" test.xml
Run Code Online (Sandbox Code Playgroud)
失败了
<?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>
Run Code Online (Sandbox Code Playgroud)
但如果我删除xmlns属性,请成功:
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<project>
<modelVersion>4.0.0</modelVersion>
</project>
</projects>
Run Code Online (Sandbox Code Playgroud)
这有什么问题吗?xmlns在非顶级标签上是否合法?
我正在使用Java Maven:
mvn help:effective-pom
Run Code Online (Sandbox Code Playgroud)
并在非顶部元素上生成带有xmlns的xml,如图所示.
ale*_*cxe 11
最简单的解决方法是检查local-name():
xmllint --xpath "//*[local-name()='project']" test.xml
Run Code Online (Sandbox Code Playgroud)
或者,定义命名空间并使用它:
echo -e 'setns ns=http://maven.apache.org/POM/4.0.0\ncat //ns:project' | xmllint --shell test.xml
Run Code Online (Sandbox Code Playgroud)
另见:
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
2749 次 |
| 最近记录: |