[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 メーリングリストの案内