PHP の XML 読み取りの問題
以下のようなコードをダウンロードしましたが、実行時に「name:」のみが表示され、その後は何も設定する必要はありません。
$parser = xml_parser_create(); //パーサーエディタを作成します
xml_set_element_handler($parser, "startElement ", "endElement ");//タグがトリガーされる 対応する関数はそれぞれ startElement と endElenment です
xml_set_character_data_handler($parser, "characterData ");//データ読み取り時に対応する関数を設定します
$xml_file= "1.xml ";// 指定読み取られる内容の XML ファイル。URL を指定できます。
$filehandler = fopen($xml_file, "r ");// ファイルを開きます
while ($data = fread($filehandler , 4096))
{
filehandler);
xml_parser_free($parser);// パーサー parser を閉じて解放します
$name=false;
$position=false;
function startElement($parser_instance , $ Element_name, $ Attrs) // 開始ラベルイベントの関数
{
グローバル $ name, $ posity
if; ($ 要素名 == "名前")
{
$name=true;
$position=false;
echo "名前: ";
if($element_name= = "POSITION ")
{$name=false;
$position=true;
echo "位置: ";
}
}
関数characterData($parser_instance) , $xml_data) //データ読み込み時の関数
{
global $name,$position;
if($position)
echo $xml_data. "
if ($name)
echo $xml_data. ";
}
function endElement($parser_instance, $element_name) ;
$position=false
}
?>
XML ファイルのコードは次のとおりです:
<従業員>
<役職= "45"> > 従業員>
<従業員>
<役職= "45"> ;
従業員>
- -----解決策---------- ---------
任意の xml を配列に読み込むことができる暗号化された xml クラスがあり、これも PHP 組み込み関数を使用して実装されます。あなたに送りたい
------解決策------
XML は GB2312 でエンコードされていると思います。デフォルトでは UTF-8。 XML ファイルを UTF8 に変更してみてください。
------解決策----------------------
ソース ファイルは正しいです。PHP4 でテストしてください。正しい
------解決策---------エンコードはutf-8です。 gb2312環境に影響があるかどうかはわかりません。
------解決策----------------------もちろん、utf であれば影響はあります。 -8 、gb2312 で使用したい場合は、トランスコードするのが最善です
------解決策----------------------