xmlstarletを使用したXMLの要素値の抽出

xmlstarletを使用したXMLの要素値の抽出

私の状況は非常に具体的で初心者です。xmlstarlet

何百ものエントリを含む以下のXMLファイルがあります。

<netbooks>
  <file id="2">
    <date>2008-06-04 16:40</date>
    <author>Daniel</author>
    <name bytes="422904" hash="383a39b183">New name of - Just an example.pdf</nome>
    <name bytes="383135" hash="5a43dc3524">Just an example.pdf</nome>
  </file>
</netbooks>

どこ=ネットブックタグ。

質問

  1. ファイルハッシュがありますが、インポート5a43dc3524したいです。~の日付、それは2008-06-04 16:40。これを行う最も簡単な方法は何ですか?
  2. また、入手方法はプロパティ id(例2:)文書要素?繰り返しますが、私はハッシュを持っています。それがすべてです。

答え1

ファイルハッシュ5a43dc3524があり、2008-06-04 16:40の日付値を取得したいと思います。これを行う最も簡単な方法は何ですか?

xpath式を使用して日付を取得できます//file[name/@hash="5a43dc3524"]/date/text()。ファイルにdata.xml質問のサンプルデータが含まれているとし、次を実行すると:

xmlstarlet sel -t -v '//file[name/@hash="5a43dc3524"]/date/text()' data.xml

私達は出力を得ます:

2008-06-04 16:40

この式//file[name/@hash="5a43dc3524"]/date/text()は、「属性値を持つ要素を含むすべての要素を検索します。<file>各要素に含まれる要素の値を取得し、そのテキスト値を返します。<name>hash5a43dc3524<file><date>

また、ファイル要素から属性ID(例:2)をどのように取得できますか?繰り返しますが、私はハッシュを持っています。それがすべてです。

私たちはとても似たようなことができます:

xmlstarlet sel -t -v '//file[name/@hash="5a43dc3524"]/@id' data.xml

関連情報