xmllint 匹配并提取值

xmllint match and extract value

我只想从 xml 中提取 "image",但出现错误,因为前几个不包括 "image"。

<?xml version='1.0' encoding='utf-8'?>
<document>
    <job name="Job1">
        <type>
            <description>
            </description>
        </type>
    </job>
    <job name="Job2">
        <type>
            <description>
            </description>
        </type>
    </job>
    <job name="Job3">
        <type>
            <description>
                <image>
                    <png></png>
                </image>
            </description>
        </type>
    </job>
</document>

如何跳过前两个并匹配第三个图像标签?

xmllint --xpath "//*[local-name()='document']/job/type/description/image/png/text()" file

如果我只修改你的输入文件的一行,改变

<png></png>

<png>Some text goes here</png>

...那么您的代码就可以像已经编写的那样完美运行。因此,该错误与没有 png.

的前几个 description 完全无关

请注意,由于您没有定义任何名称空间,因此根本不需要弄乱 local-name()

xmllint --xpath "/document/job/type/description/image/png/text()"

...同样有效。