2
我一直試圖通過不同的選項來解決這個問題,並且找不到正確的方法。 下面是XML文件:xmlstarlet根據文本值選擇同級
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>PriceRule__c.All</members>
<members>PriceRule__c.None</members>
<members>ProductRule__c.All</members>
<members>Quote__c.All_Quotes</members>
<members>SummaryVariable__c.All</members>
<name>ListView</name>
</types>
<types>
<members>*</members>
<name>AnalyticSnapshot</name>
</types>
</Package>
我希望能夠得到這是在同一個「類型」節點與PriceRule__c開頭的「成員」節點「姓名」節點的文本。 這裏是最遠的,我能得到這是真正找到這些節點的值:
echo $(xmlstarlet sel -N x="http://soap.sforce.com/2006/04/metadata" -t -v "//x:types/*[starts-with(text(),'PriceRule__c')]" test.xml)
這會打印出:
PriceRule__c.All PriceRule__c.None
但我需要的是一種方式來獲得價值的ListView 任何想法XPath應該如何得到它? 提前謝謝!
謝謝!這就是我一直在尋找的! –
我不清楚在示例中「/:」代表的是什麼。 –
@BillHileman:它是一個名稱空間前綴,由OP在xmlstarlet中通過'-N'定義,以覆蓋XML文檔中的默認名稱空間。請參閱[*** XPath如何處理XML名稱空間?***](https://stackoverflow.com/questions/40796231/how-does-xpath-deal-with-xml-namespaces) – kjhughes