私はこのようなものを使ってXMLファイルから値を抽出したいと思います。
はい。
<?xml version="1.0" encoding="UTF-8" ?>
<items>
<channel>
<title><![CDATA[*** text 1 text ***]]></title>
<playlist_url><![CDATA[http://host.net/aa/15_info/]]></playlist_url>
</channel>
<channel>
<title><![CDATA[*** text 2 text ***]]></title>
<playlist_url><![CDATA[http://host.net/aa/16_info/]]></playlist_url>
</channel>
<channel>
<title><![CDATA[*** text 3 text ***]]></title>
<playlist_url><![CDATA[http://host.net/aa/vodpr/]]></playlist_url>
<protected>True</protected>
</channel>
<channel>
<title><![CDATA[*** text 4 text ***]]></title>
<playlist_url><![CDATA[http://host.net/aa/vodpr/con_tv_r.php]]></playlist_url>
<protected>True</protected>
</channel>
</items>
別々に抽出する必要があります」http://host.net/aa/vodpr/「そして」http://host.net/aa/vodpr/con_tv_t.php'変数 URL 値です。
ありがとう
答え1
値を持つplaylist_url
ノードの各ノードのノード値を取得したいとしますchannel
。protected
True
$ xmlstarlet sel -t -v '//channel[protected = "True"]/playlist_url' -nl file.xml
http://host.net/aa/vodpr/
http://host.net/aa/vodpr/con_tv_r.php
xmlstarlet
これは文書にXPATHクエリを適用するために使用されます。最後に、-nl
データの最後の部分に終了改行文字を追加します。
ノードの特定のテキストtitle
(たとえば「contains text 3
」)に対応するURLを選択するには、次のようにします。
$ xmlstarlet sel -t -v '//channel[./title[contains(., "text 3")]]/playlist_url' -nl file.xml
http://host.net/aa/vodpr/
text 3
ここでは、ノード値のテキストを検出し、title
その特定のchannel
ノードを選択します。それから私たちはplaylist_url
その中から選択して選択します。