2016-11-17 4 views
-1

に特定のテキストを含む子供を抽出するために:ここでxmllint:どのように私は例としてXMLを以下している別のXML

<Config> 
<Version>0</Version> 
<Model>My model</Model> 
<ParameterList> 
    <Parameter> 
     <Name>Device.Modelname</Name> 
     <Value>XC60</Value> 
    </Parameter> 
    <Parameter> 
     <Name>Device.Size</Name> 
     <Value>4</Value> 
    </Parameter> 
    <Parameter> 
     <Name>Tyre.Size</Name> 
     <Value>20</Value> 
    </Parameter> 
    <Parameter> 
     <Name>Tyre.Model</Name> 
     <Value>WATSU</Value> 
    </Parameter> 
</ParameterList> 
</Config> 

は、私は新しい(別の)XMLファイルとして達成したいものです。だから、私は条件を満たす子供の一部を抽出し、それらの子だけを含む新しいxmlファイルを作成したいと思います。

<Config> 
<ParameterList> 
    <Parameter> 
     <Name>Device.Size</Name> 
     <Value>4</Value> 
    </Parameter> 
    <Parameter> 
     <Name>Tyre.Model</Name> 
     <Value>WATSU</Value> 
    </Parameter> 
</ParameterList> 
</Config> 

基準は、子の名前がDevice.SizeまたはTyre.Modelであることです。

私はそれぞれの子をループしてgrepをかxarg'ing bashスクリプト内の値ではなく、xmllint自体にこれを達成するための簡単な方法がある場合は、私が思っていたみました。

+0

私は(いくつかのヒットである必要があり、SO検索)恒等変換構築し、あなたが空のテンプレート、例えばによりたくないすべてのものを除外し、XSLTを使用してお勧めしたいです'Version'、' Model'と必要としないパラメータとのマッチングを行います。 xsltprocは、libxml/xmllintスイートの下の別のプログラムです。 –

答えて

1

チェックアウトXPath。手動頃はXMLを解析する必要はありません;)付加xmllintで

XPath interfaceを提供しています。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [口コミより](/レビュー/低品質・ポスト/ 14317243) –

+1

@SebastianLenartowiczは、IMOの答えのコアは、XPathを使用するために提案され、そしてそれは、リンクがなくても動作します。それらは関連するドキュメントへのポインタに過ぎません。 –

+1

著者は「xmllint自身でこれを達成するための簡単な方法があるかどう思っていた」と、私は特にxmllintとそれを使用してXPathは、この質問に対する適切な答えだと思います。 – infotoni91

関連する問題