[PHP-users 34008] Re: XMLパーサーの使い方

okuyama @ workgroup.jp okuyama @ workgroup.jp
2008年 8月 20日 (水) 23:39:53 JST


http://keithdevens.com/software/phpxml/xml.phps

ソースを読むとわかるかとは思いますが、
内部は、XML パーサ関数を使っているので、

> <?xml version="1.0" encoding="x-sjis-cp932" ?>

ここの、x-sjis-cp932が(ISO-8859-1, US-ASCII , UTF-8)でないことが原因で、
xml_parse() でエラーになっているはずです。

<br />のような、意味のないタグを消してあげれば、
要素の属性として取得できるはずです。

あとは、出てきた結果を、var_dump して考えてください。


2008/08/20 16:41 SHINICHI OGURI <oguri @ fass.co.jp>:
> 小栗です。
> 先日も質問させて頂きましたが、別件で質問させてください。
>
> 今回は、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 mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>



-- 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■携帯初のフル3DオンラインRPG!!
『イルーナ戦記online』
5/12(月) i-mode メニューサイトオープン
http://iruna.asobimo.com/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2007/7/04
CM王国β版 リリース

http://cm-king.com/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■無料ファイル転送

SSL対応で安心!アスキーでも特集されました。
http://postfile.jp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■最新ゲームニュース

無料Flashゲーム20本遊び放題!
http://www.gamingtv.jp/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■数量限定値下げ

ライター必見!大幅値下げ実施中。
http://www.digbook.jp/information.php?tpl=writer_pr
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■はじめなければ、はじまらない

スターワールド学院
http://starworldjp.com/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
. ・ . + : ゜. ‥ ゜. .
 ‥ ゜. . . ・. ・ . +
 / + ゜. ・ . + :

★ アイ・ティ・コム
 彡彡ミ 奥山 敦二 (Atsuji Okuyama)
 )∂∂b mail: okuyama @ workgroup.jp
 ( ー 人__ msn : okuyama_vingt @ msn.com
  ̄/)/ |
 |` ̄ "\

〒164-0003
東京都中野区東中野1-16-8-205
Tel 03-5579-9337
Fax 03-5579-9338


PHP-users メーリングリストの案内