2013-06-22 71 views
0

我需要從KML中選擇包含顏色ccff00ff的所有<Style>塊。喜歡的東西:根據標籤的值選擇XML元素

<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到無論我想要什麼,它仍然匹配,所以我可以認爲它根本不起作用!

回答

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

行情不嵌套;使用雙引號單的人裏面:

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

您鏈接的例子有其他方式報價,因爲cmd.exe不承認單引號作爲引用字符。由於bash確實會將雙引號識別爲引用字符,所以您可以這樣做,但它們是「軟引用」,因此您可能會遇到一些麻煩。就XPath而言,兩種報價類型完全相同。

+0

OMG,那太簡單了,我感到尷尬!我實際上是在Linux上進行bash,但是這確實有用。我一定是睡着了或者睡着了...... –

+0

@TeresaeJunior:有時你只需要一雙清新的眼睛。語法突出顯示也可以提供幫助。 – npostavs

+0

啊,是的。不過,我直接在終端上工作。謝謝! –