simpleXMLでsjisの日本語タグも扱えるらしい。

simpleXMLでShift_JISの日本語タグも扱えるらしい、とのことで。

シフトJISでマルチバイトなタグで構成されたXMLファイルがsimplexmlで扱えるのか試してみた。結果からいうと「すごい!」「使える!」。

http://php.tekmemo.net/?p=967

DOMでも使えるか確認してみたくなった。せっかくなので、Zend_Dom_Queryと同様のクエリが使えるか試した。
5Cがうまく扱えるのかが気になるところだったので、こんな感じにしてみた。もちろんXML文字コードShift_JISにして保存してある。

<?xml version="1.0" encoding="shift_jis"?>
<ルートノード>
 <アイテム一覧>
  <アイテム>
   <タイトル>ほげ1</タイトル>
   <本文>うわー</本文>
  </アイテム>
  <アイテム 属性="能">
   <タイトル>ほげ2</タイトル>
   <本文>うわー</本文>
  </アイテム>
  <アイテム>
   <タイトル>ほげ3</タイトル>
   <本文>うわー</本文>
  </アイテム>
 </アイテム一覧>
</ルートノード>

これをDOMで読み込んで、タグクエリーにかけて抽出してみる。

<?php
$dom = new Zend_Dom_Query("test.xml");
$results = $dom->query('アイテム');
foreach ($results as $result) {
     $result->setAttribute('test', 'hoge');
}
echo mb_convert_encoding($dom->saveXML(), "UTF-8", "Shift_JIS");

これで、能も含んだアイテム一覧を取り出すことができた。
何に使う?かよくわかりませんが、タグとかカテゴリーに使うのは面白いかもしれない。