根据标记的值选择XML元素



我需要从包含颜色ccff00ff的KML中选择所有<Style>块。类似于:

<Style id="inline">
    <LineStyle>
        <color>ccff00ff</color>
        <width>5</width>
    </LineStyle>
</Style>

我已经把头靠在墙上好几个小时了,这是根据这次讨论我能得到的最接近的:

xmlstarlet sel -N 'ns=http://www.opengis.net/kml/2.2' -t -c '//ns:Style[.//ns:color[contains(text(), 'ccff00ff')]]' myplaces.kml

不幸的是,如果我将ccff00ff更改为我想要的任何内容,它仍然匹配,所以我可以假设它根本不起作用!

'//ns:Style[.//ns:color[contains(text(), 'ccff00ff')]]'

引号不嵌套;在单引号中使用双引号:

'//ns:Style[.//ns:color[contains(text(), "ccff00ff")]]'

您链接的示例使用了相反的引号,因为cmd.exe不将单引号识别为引号字符。由于bash也将双引号识别为引号字符,所以可以这样做,但它们是"软引号",因此可能会遇到一些麻烦。就XPath而言,两种引号类型完全相同。

相关内容

  • 没有找到相关文章

最新更新