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
しかし、私が必要とする値リストビューを取得する方法である ここに私が実際にそれらのノードの値を見つけることだった得ることができる最も遠いです XPathがこれを取得する方法は何ですか? ありがとうございます!
ありがとうございました!これは私が探していたものです! –
この例では/が表す "x:"が何であるかはっきりしていません。 –
@BillHileman:XML文書のデフォルトの名前空間をカバーするために、xmlstarletの '-N'を介してOPによって定義された名前空間接頭辞です。 [*** XPathはXML名前空間をどのように扱うのですか?***](https://stackoverflow.com/questions/40796231/how-does-xpath-deal-with-xml-namespaces)を参照してください。 – kjhughes