HOME>WEBプログラム覚書>SimpleXMLメモ

SimpleXMLメモ

valuecommerceのAPIを叩いて返ってくるXMLを SimpleXMLを利用してパースしようとしたら、 うまくできない部分があった。

返ってくるXMLはこれ

CDATAを取得

オプションを指定せずコンストラクタやパースする関数を実行した場合、 CDATAを取得できない。

CDATAを取得するにはLibxmlパラメータにLIBXML_NOCDATAを指定すると取得できるようになる。

PHP

  1. <?php
  2. $sxe = new SimpleXMLElement($xml, LIBXML_NOCDATA);
  3. $sxe = simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOCDATA);
  4. $sxe = simplexml_load_file($url, "SimpleXMLElement", LIBXML_NOCDATA);
  5. ?>

という感じ。

名前空間の処理

<vc:○○>こんなやつに挟まれてるのも$xml->children()では取得できない。

参照サイト
名前付きの要素を要求する際に、ローカル名と共に名前空間 URI (Uniform Resource Identifier) を指定する必要がある点です。 これは 2 段階のプロセスです。まず、children() 関数に名前空間 URI を渡すことによって、 対象とする名前空間にある子要素を要求します。次に、その名前空間での正しいローカル名を付けて要素を要求します。

PHP

  1. <?php
  2. $xml->children("http://valuecommerce.com/pdb/rss/");
  3. ?>

という風にすると取得できる。

投稿日 2009年4月17日 21:06
カテゴリ PHP
タグ 関数
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1165

コメント

コメントする
Name
Email Address
URL