私の状況は非常に具体的で初心者です。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>
どこ根=ネットブックタグ。
質問
- ファイルハッシュがありますが、インポート
5a43dc3524
したいです。値~の日付、それは2008-06-04 16:40
。これを行う最も簡単な方法は何ですか? - また、入手方法はプロパティ
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>
hash
5a43dc3524
<file>
<date>
また、ファイル要素から属性ID(例:2)をどのように取得できますか?繰り返しますが、私はハッシュを持っています。それがすべてです。
私たちはとても似たようなことができます:
xmlstarlet sel -t -v '//file[name/@hash="5a43dc3524"]/@id' data.xml