使用xmllint从xml文件中提取数据

时间:2012-04-07 10:48:56

标签: xml-parsing extract xmllint

我有一个小文档,我需要使用xmllint从中提取一些值。我可以使用xmllint --shell xmlfilename命令在xml层次结构中导航。

但我无法提取值。我不想使用grep /任何模式匹配命令,因为已经完成并且是成功的。

对于

的任何帮助,我们表示感谢

以下是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 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>

2 个答案:

答案 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