同様のコンテンツ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値。
宜しくお願いします
値channel
のprotected
ノードを持つ各True
ノードのplaylist_url
ノードの値を取得するとします。
$ 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
ノードの特定のテキストに対応するURL(たとえば、「contains text 3
」)を選択するには、次を使用します。
$ xmlstarlet sel -t -v '//channel[./title[contains(., "text 3")]]/playlist_url' -nl file.xml
http://Host.net/aa/vodpr/
ここでは、title
ノードの値でtext 3
テキストを検出し、その特定のchannel
ノードを選択します。次に、そこからplaylist_url
を選択します。