我需要从包含颜色<Style>
的KML中选择所有ccff00ff
块。类似的东西:
<Style id="inline">
<LineStyle>
<color>ccff00ff</color>
<width>5</width>
</LineStyle>
</Style>
我一直在墙上敲打几个小时,这是我可以根据this discussion得到的最接近的:
xmlstarlet sel -N 'ns=http://www.opengis.net/kml/2.2' -t -c '//ns:Style[.//ns:color[contains(text(), 'ccff00ff')]]' myplaces.kml
不幸的是,如果我将ccff00ff
改为我想要的,它仍然匹配,所以我可以认为它根本不起作用!
答案 0 :(得分:1)
'//ns:Style[.//ns:color[contains(text(), 'ccff00ff')]]'
行情不嵌套;在单个引号中使用双引号:
'//ns:Style[.//ns:color[contains(text(), "ccff00ff")]]'
您链接的示例反过来引用了引号,因为cmd.exe
无法将单引号识别为引号字符。由于bash确实将双引号识别为引用字符,你可以这样做,但它们是“软引号”,所以你可能遇到一些麻烦。就XPath而言,两种引用类型完全相同。