xmllint与xpath无法正常工作

时间:2013-03-13 16:20:18

标签: xml bash xpath xml-parsing xmllint

这就是我所拥有的。它显然没有做它应该做的事情甚至崩溃。有什么不对,还是有其他工具可以帮我解析BASH中的XML?

:~$ cat test.xml 
<project xmlns="http://www.netbeans.org/ns/project/1">
  <type>org.netbeans.modules.ant.freeform</type>
</project>

:~$ xmllint --xpath '//type/text()' test.xml 
Segmentation fault (core dumped)

:~$ xmllint --xpath '//type' test.xml 
XPath set is empty

2 个答案:

答案 0 :(得分:0)

要搜索命名空间元素,您可以测试本地名称,如下所示:

xmllint --xpath '//*[local-name()="type"]/text()' test.xml

更精确的方法是

xmllint --xpath '//*[namespace-uri()="http://www.netbeans.org/ns/project/1" and local-name()="type"]/text()' test.xml

答案 1 :(得分:-1)

您的问题是您的XML ...不是有效的XML文件。

在此之前尝试:

sed -i '1i <?xml version="1.0" encoding="UTF-8"?>' test.xml

经过测试,您遇到了名称空间问题,请尝试以下方法:

xmllint --shell test.xml
/ > setns x=http://www.netbeans.org/ns/project/1
/ > xpath /x://type/text()