自分が運営するサイトの情報を API で公開したいと思います。

過去のここの質問は読みました。
http://q.hatena.ne.jp/1187581294,1182094425,1221611172

「最終的に、PHPのsimple_xml_loadでXMLのデータを取得したいのです。」
僕が考えた以下のやり方だとエラーが返されてしまいました。

DB→サーバサイドのPHP側の処理でDBのデータをxml吐き出し→
ウェブページ側のPHPでXMLを取得しようと、simple_xml_load(http://~~.php?cd=01);

http://~~.php?cd=01などをURLでたたいてあげれば、
ブラウザ上ではXMLとして出るのですが、simple_xml_loadではデータが拾えず、APIに対する僕の考えが甘かったみたいです。

エラー内容
「Warning: simplexml_load_file() [function.simplexml-load-file]: http://~~/api/api_data.php?client_cd=16:1: parser error : XML declaration allowed only at the start of the document in 」

AtomやRestについても少し調べてみたのですが、具体的な解決が見つからず困っております。
実際に動いているWebAPIのサービスは色々あるかとおもいますが、
PHPのsimple_xml_loadでXMLのデータを取得できるAPIサービスは、どのようにXMLデータを出力しているのでしょうか。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2009/04/23 09:29:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:hijk05 No.1

回答回数1307ベストアンサー獲得回数23

ポイント100pt

単にXMLの構文エラー(文法エラー)だと思うので、吐き出しているXMLのエラーチェックをすればよいと

思いますよ。ブラウザで表示されるからといって、XMLとして正しいわけではありません。

あと、XMLで文字コードをきちんと指定するか、UTF-8ぐらいにすれば読めるかも。

>PHPのsimple_xml_loadでXMLのデータを取得できるAPIサービスは、どのようにXMLデータを出力しているのでしょうか

あなたのやってるやりかたと同じです。

id:Chroto

早速のお返事ありがとうございます!

>あなたのやってるやりかたと同じです。

おおお・・・・!

ちょっと自信がでてきました。なんか拡張子のhttp://~~.php?cd=01の.phpが他のAPIサービスには無かったので・・・

(ただ単純に見えないようにしているだけなんですかね)

XMLは今、こんな感じのを吐き出すのですが・・・。

  • <result>

<cnt>3</cnt>

</result>

2009/04/23 09:11:56
  • id:zero-uhura
    zero-uhura 2009/04/23 09:43:48
    PHPのsimple_xml_loadでは問題ないかもしれませんが、以下のヘッダを送信する方が良いと思います。
    Javascriptから読み取る時、一部のブラウザでこのヘッダがないとうまく動作しなかった経験があります。

    header("Content-Type: application/xml");

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません