对于没有名称空间的XML,我可以通过xpath来获取元素的文本内容:
$ xmllint --xpath '//hash/text()' test.xml
0x63cCEF733a093E5Bd773b41C96D3eCE361464944
但是因为我的XML文件在根元素上有一个命名空间,所以我必须这样做:
$ xmllint --shell test.xml
/ > setns h=http://my.domain/namespace
/ > xpath //h:hash/text()
Object is a Node Set :
Set contains 1 nodes:
1 TEXT
content=0x63cCEF733a093E5Bd773b41C96D3eCE3614649...
如您所见,值44
的最后一位被修剪掉并替换为...
(令我惊讶的是,修剪字符串后输出变得更长,因为...
有3个字符)。
是否有一种无需删除名称空间即可获取全文内容的方法?谢谢。
P.S。 XML文件中的名称空间前缀有所不同,我不能假设元素<h:hash>
在本地存在。