[PHP-users 26149] バグ?DOM関数 domxml_open_file()について
Takeo Matsumoto
dise-take @ k3.dion.ne.jp
2005年 7月 13日 (水) 18:42:45 JST
はじめまして、松本と申します。
現在ゲートウェイを利用してXMLファイルを取得し、それを読み込む、
という処理を実装しているのですが、どうもdomxml_open_fileが期待通りに
動作しない(バグ?)ので、皆さんにご教授願いたく投稿させていただきました。
環境
php-4.3.11
libxml2-2.6.19
で、ゲートウェイ:gw_user_data.jspが以下のようなXML文書を出力します。
<?xml version='1.0' encoding="Shift_JIS" ?>
<user id="1">
<address_from_state>海外</address_from_state>
<address_now_state>東京</address_now_state>
<blood_type>A型</blood_type>
<family_name>SNS</family_name>
<first_name>ルーツ</first_name>
<profile>my data</profile>
<sex>男</sex>
<address_from>no data</address_from>
<address_now>千代田区</address_now>
<another_face>no another face</another_face>
<born_date>Sun Jan 01 00:00:00 JST 1984</born_date>
<hobby/>
<id>10000</id>
<mail>info @ univa.jp</mail>
<new_message>false</new_message>
<nick_name>SNSroot</nick_name>
<school_id>0</school_id>
<school_level>0</school_level>
<school_name>法政大学</school_name>
<up_id>0</up_id>
</user>
ここで、
$URL = "http://test.test/gw_data_user.jsp?mail=****&pass=***";
domxml_open_file($URL);
$user = $doc->child_nodes();
print_r($user);// ************************* (1)
$childs = $user[0]->child_nodes();
print_r($childs);//*********************** (2)
となると、1の方は、確かにオブジェクトの取得を確認できるのですが、(2)の
方は空の配列が出力されます。
そこで、
$str = join("",file($URL));
domxml_open_mem($str);
$user = $doc->child_nodes();
print_r($user);// ************************* (1)
$childs = $user[0]->child_nodes();
print_r($childs);//*********************** (2)
とすると、(1),(2)ともに期待されるように、各domelementオブジェクトが出力
されます。
さらに試しに上記XMLコードをファイルtest.xmlに保存し、
domxml_open_file("test.xml");
として、上記と同じ処理をテストしてみると、これは成功します。
以上のテストから、domxml_open_file()でURLを開いた場合、XMLファイルのパー
スが失敗するのではないか?と考えました。
これはバグなのでしょうか?
それとも私のテスト自体に問題があるのでしょうか?
ご意見、お願い致します。
*************************************************
waseda.univa
PHP-users メーリングリストの案内