[PHP-users 34003] XMLパーサーの使い方
SHINICHI OGURI
oguri @ fass.co.jp
2008年 8月 20日 (水) 16:41:51 JST
小栗です。
先日も質問させて頂きましたが、別件で質問させてください。
今回は、XMLパーサーのモジュールに関してです。
(使用モジュール:Keith Devens - PHP XML Library XML_Unserializer)
環境:PHP4.1.2 コバルトRaq550
前の質問で、決済システムのASPからスクリプト上でPOSTして返値を得る方法は解決した
(と思われた)のですが。。
その返り値で得られたXMLデータをパーサーを使って解析して目的の値を得るのに
またも暗礁に乗り上げてしまった状態です。
上記モジュールの使用法をネットで調べた所、
$resdata = XML_Unserialize($response);
1.XMLデータ$responseをパラメータにして上記のように実行する。
2.$resdataに配列として取得できる。
ということなんですが。。
例えば・・・
$responseが、
---------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<user>
<name>小栗伸一</name>
<language>php</language>
<language>javascript</language>
</user>
---------------------------------
であれば、おそらく
$resdata["user"]["name"] → 小栗伸一
という感じで取得できると思っています。
ただ、今回返値で得られたXMLデータというのが、
echo $responseを実行すると・・・
---------------------------------
<?xml version="1.0" encoding="x-sjis-cp932" ?>
<br />
<Exxxxx_result>
<br />
<result result="0" />
<br />
<result err_code="601" />
<br />
<result
err_detail="%89%BF%8Ai%82%CC%8Ew%92%E8%82%AA%88%D9%8F%ED%82%C5%82%B7%20" />
<br />
<result
memo1="%95%A1%90%94%83J%81%5B%83g%82%CC%8F%EA%8D%87%82%CD%8D%C5%8C%E3%82%CC%8F%A4%95i%83R%81%5B%83h%81E%8F%A4%95i%96%BC%82%F0%90%DD%92%E8%82%B5%82%DC%82%B7%81B"
/>
<br />
<result memo2="" />
<br />
</Exxxxx_result>
<br />
<br />
---------------------------------
という内容が表示されます。
(正確に言うと表示されるのではなく、何も表示されなくて、ソースコードを見ると
内容表示させている箇所に上記コードが記述されている。のですが・・・)
通常のXMLデータのフォーマットと違うみたいですが・・
データとしては、何らかの記述形式の違いだけで根本的にはちゃんとしたデータが返
ってきているということだと思います。
※ASPから提供されている説明書には
”「異常終了」の際の返り値は、「result」、「err_code」、「err_detail」、
「memo1」、「memo2」を返します”
と書いてあります。
だから、例えば、エラーコードの601というのを表示させたいと思い、
echo $resdata["Exxxxx_result"]["result"]["err_code"]; とか、
echo $resdata["Exxxxx_result"]["result"]["result err_code"]; とか、
echo $resdata["Exxxxx_result"]["result"][0]
(順番に「result="0"」「err_code="601"」とかいう文字列になってたりするのでは
ないかと思い・・)
等と記述してみるのですが、どれも値の取得が出来ません。。
質問としましては、
・上記のようなXMLの記述が通常で存在するのでしょうか?
・このXMLパーサーで解析可能なのでしょうか?
最終的には
・上記のXMLデータからデータを解析して取得する方法
を教えていただけないかと思っています。
ながながと、申し訳ありませんが、
わかる方が居られましたら、レスお願いいたします。
以上です。
PHP-users メーリングリストの案内