我有一个小xml文档,我需要使用xmllint从中提取一些值。我可以使用xmllint --shell xmlfilename
命令在xml层次结构中导航。
但我无法提取值。我不想使用grep /
任何模式匹配命令,因为已经完成并且是成功的。
对于xmlliint。
的任何帮助,我们表示感谢以下是png
格式的文档。我想提取300$
和500$
(value
)。
<?xml version="1`.`0" encoding="ISO-8859-1"?>
<adi>
<asset>
<electronics item="Mobile" name="Nokia" value="300$" />
<electronics item="Mobile" name="Sony" value="500$" />
</asset>
</adi>
另一个疑问是,这两个集合是同一个xml的不同表示吗?
<?xml version="1.0 encoding="ISO-8859-1"?>
<adi>
<asset>
<electronics>
<item> Mobile </item>
<name>Nokia</name>
<value>300$</value>
</electronics>
<electronics>
<item> Mobile </item>
<name>Sony</name>
<value>500$</value>
</electronics>
</asset>
</adi>
答案 0 :(得分:1)
关于您的第二个问题,这两个代码段不表示相同的XML内容。属性和子元素不相等。子元素可以是某个任意XML树的根元素,但属性是原子的。
例如,我可以像这样修改第二个片段:
<?xml version="1.0 encoding="ISO-8859-1"?>
<adi>
<asset>
<electronics>
<item>
Mobile
<sub-item>Phone</sub-item>
</item>
<name>Nokia</name>
<value>300$</value>
</electronics>
<electronics>
<item> Mobile </item>
<name>Sony</name>
<value>500$</value>
</electronics>
</asset>
</adi>
我已将<sub-item>Phone</sub-item>
添加到第一个<item>
元素。
但是,如果item
是属性,则没有相应的内容,就像在第一个代码段中一样。
答案 1 :(得分:0)
迟到但是当搜索标签 xmllint 与第一页匹配时,我现在回答你;)
使用--xpath代替--xpath,如下所示
xmllint --xpath '//electronics/value/text()' second-xml_file.xml