1

我有一个小的文档,我需要使用 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>
4

2 回答 2

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>元素的地方。但是,没有等效的 ifitem是一个属性,就像在第一个片段中一样。

于 2013-10-04T21:34:46.950 回答
0

迟到了,但当搜索标签xmllint与第一页匹配时,我现在回答你;)

使用 --xpath 代替 --xpath 如下

xmllint --xpath '//electronics/value/text()' second-xml_file.xml
于 2012-09-29T22:23:40.363 回答