XML文書の展開

構造化されたXML文書を読みやすい文章(平文)に展開する

1.XML文書の特徴

 XML(eXtensible Markup Language)は言語の仕様のことで、「拡張可能なマークアップ言語」と訳されており、文書のもつ「見出し」「本文」・・・などの論理構造を「タグ(<>で囲む)」と呼ばれるもので記述します。要するに文書の内容一つ一つに名前(タグ)を付与し、「タグ」を検索項目として文書の内容を読み取るといった手法を使って「書き手」と「読み手」の間で間違いなく情報を交換できるといった利点があります。

2.XML文書の例

<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xml:lang="ja">

<channel rdf:about="">
<title>●●●日本語でタイトルを記述●●●</title>
<link/>

<description>●●●日本語で文書の内容を記述●●●</description>
<dc:date>2021-06-26 00:00:00+09:00</dc:date>
<dc:creator/>
<dc:subject/>
<dc:rights>Copyright ●●●著作権の所有者を記述●●●</dc:rights>
<sy:updatePeriod>weekly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
</channel>

<item rdf:about="●●●文書のURL●●●">
<title>新型コロナウイルスの感染症対策</title>
<link>●●●項目の詳細情報を掲載するURL●●●</link>
<description/>
<dc:date>2021-06-09T00:00:00+09:00</dc:date>
<dc:subject>●●●副題を記述●●●</dc:subject>
</item>

</rdf:RDF>

(例)新着情報として提供される内容
  4行目・・・文書のタイトル
  7行目~14行目・・・文書全体の説明
  16行目~22行目・・・項目の記述、項目の数だけこの部分を繰返す
    ※20行目と21行目は19行目の内容を複数行の情報で補う

3.XML文書を読み込む

	$i = 0;
	$url = "●●●新着情報が掲載されているurl●●●";
	$rss = simplexml_load_file($url);

if ($rss)
  {
	 foreach ($rss->item as $item)
		 {
		  $title	= $item->title;
		  $link 	= $item->link;
	   $desc 	= $item->description;	
		  $date 	= date('Y年 m月 d日', strtotime($item->children("http://purl.org/dc/elements/1.1/")->date));	
   ●●●項目に対する処理を記述●●●
     }
  }
else
  {
 	echo "エラー発生";
  }

 3行目・・・XML文書(ファイル)全体を取り出す命令
 7行目~14行目・・・<item>タグが存在する間、繰返す
   ※各項目(item)をタグ名で取り出す(title、link、date等々)

 概ね新着情報等は規則正しく構成されているので、丁寧に構造を観察すれば、上記サンプルを修正するだけで読み込めます。

4.注意点(simplexml_load_file)

 テスト段階で以下の様なメッセージが表示される場合
 
  simplexml_load_file(): httWarning:ps:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /●●●エラー発生のソースライン番号●●●

 使っているサーバーが外部のXMLデータの読込を許可していないために発生するエラーです。
 先ず使用しているサーバーの「php.ini」の「allow_url_fopen」パラメーターをチエックしてください。「allow_url_fopen=0」だと読込が許可されていないので外部のXMLデータは読込めません、「allow_url_fopen=on」に変更してください。
 「php.ini」の変更ができないサーバーだと「simplexml_load_file」の命令は使用できないので別の方法(テキスト形式のファイルとして読込む方法)でお願いします。


投稿日

カテゴリー:

,

投稿者:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です