フィルタテキストXMLファイル

フィルタテキストXMLファイル

特定のフィールドのみをフィルタリングしたい大規模な(数十万のレコードを含む)XMLファイルがあります。ファイル構成の例:

<A>
<id>123</id>
<B>
   <C>value1</C>
   <D>value2</D>
   ....
   <E></E>
</B>
<Z></Z>
...
<Y></Y>
<A>

このXMLファイルをフィルタリングし、CフィールドとDフィールドに含まれるIDとデータのみを含めたいです。

どうすればいいですか?

ベストアンサー1

これxmlstarletこのツールは次のことを行います。

xmlstarlet sel -t -m /A -o ID, -v id -n -o C, -v //C -n -o D, -v //D -n test.xml 

ルート要素()-m /Aの下の各Aについて、文字列「ID」(-o ID,)、idの内容()-v id、改行()を印刷し、子要素C()、D()、-nおよびその項目についても同様です。ヘッダー。二重スラッシュは、「ノードの下のどこにでも一致」を意味するXPathです。-v //C-v //D

テストファイルを使用して自分のシステムでテストした結果は、カンマ区切りの出力です。

ID,123
C,value1
D,value2

ヘッダーが必要ない場合は、-o <whatever>パラメータを省略してください。

ありがとうこの記事説明する。

おすすめ記事