PHP の SimpleXML の名前空間の落とし穴
PHP の SimpleXML を使用して XML ドキュメントを解析する場合、カスタムの名前空間が問題を引き起こす可能性があります。カスタム名前空間を持つ次の XML について考えてみましょう。
<code class="xml"><?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au"> <channel> <item> <link>qweqwe</link> <moshtix:genre>asdasd</moshtix:genre> ...</code>
このような名前空間内の要素にアクセスする場合、SimpleXML のデフォルトの動作は単純ではありません。この課題を克服する方法は次のとおりです。
解決策: 名前空間引数を指定して Children() を利用する
SimpleXML の Children() メソッドを使用すると、名前空間に基づいて要素をフィルタリングできます。名前空間プレフィックスと true を 2 番目の引数として渡して、名前空間情報も取得します:
<code class="php">$rss = simplexml_load_string(...); foreach ($rss->channel as $channel) { echo 'link: ', $channel->link, "\n"; echo 'genre: ', $channel->children('moshtix', true)->genre, "\n"; }</code>
この例では、出力は次のようになります:
link: qweqwe genre: asdasd
このアプローチを使用すると、 PHP の SimpleXML を使用して XML ドキュメントを解析するときに、カスタム名前空間内の要素に効果的にアクセスして利用できます。
以上がPHP の SimpleXML を使用してカスタム名前空間内の要素にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。