0

这就是我所拥有的。它显然没有做它应该做的,甚至崩溃了。有什么问题还是有任何其他工具可以帮助我在 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
4

2 回答 2

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
于 2018-02-27T21:54:05.537 回答
-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()
于 2013-03-13T16:22:35.037 回答