• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:xml)

XMLを使用してサーバーの費用を抑える方法

このQ&Aのポイント
  • 質問者は、現在のサーバーにSQLを追加すると高額になるため、XMLに挑戦しています。
  • 質問者はXMLを作成しましたが、表示されないようです。正しいソースコードを教えてください。
  • PHPのコードを使用してXMLから情報を取得しようとしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.3

えっと、その契約しているサーバでは XML を 使うモジュールがインストールされているでしょうか? サーバが Windows なのか UNIX なのかで話が かなり変わってきます。 onoyoko さんが最初にあげられたプログラムは Shift-JIS をつかって、まるで MSXML を使っている ように見えたので、Windows サーバと推測したのですが、 ■ Windows サーバの場合 <html> <head> <title>sample1</title> </head> <body> <?php // XMLDOMオブジェクトの作成 $doc = new COM('MSXML2.DOMDocument'); // 文書を最後まで読み込む設定 $doc->async = false; // XML文書の読み込み $doc->load("D:\\Projects\\name.xml"); // TEST ノードの検索 $node_test = $doc->selectSingleNode("test"); // TEST ノード直下のノードすべて検索 $nodes_test = $node_test->selectNodes("*"); // TEST ノード直下の2個目のノード(NO ノード)を取得 $node_no = $nodes_test->item(1); // NO ノードのテキストを取得して文字列生成 $text = " 番号 " . ($node_no->text) . "<br>"; print $text; ?> </body> </html> これで僕の環境でも動作しました。 http://www18.tok2.com/home/koumori27/xml/mxphp/mxphp3.html を参考にして下さい。 ■ UNIX サーバの場合 <?php $dom = domxml_open_file("name.xml"); ?> でエラーが出なければ、DOM XML がインストールされて います。もしエラーが出たのであれば、契約のサーバで XML を使うのは、ちょっと面倒になります。 http://php.s3.to/man/ref.domxml.html

onoyoko
質問者

お礼

エラーが出てしまうので、契約しているサーバー会社への確認をしてみます。 とてもよく理解できました、ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • togino
  • ベストアンサー率75% (97/129)
回答No.2

??? ちょっと超基本的な事確認させてもらって失礼ですが、 $doc って変数、どこかで XML Document クラスとして 初期化していますよね。

onoyoko
質問者

補足

いいえしていません(汗 大変申し訳ございません、基本的な事が分かっていないようです。 教えて頂けますでしょうか? 宜しくお願いいたします。

すると、全ての回答が全文表示されます。
  • togino
  • ベストアンサー率75% (97/129)
回答No.1

$no 変数は <no> ノードを指していると思いますが ノードの中のテキストノードを取得する為に > $text = " 番号 " . $no . "<br>"; $text = " 番号 " . $no->text . "<br>"; に変更してみてください。 あと、私は Apache for Win32 に Windows 版 PHP を 利用したので $doc->load("name.xml"); においては $doc->load("D:\\folder\\name.xml"); みたいにフルパスで指定しないと正常に読み込んで くれませんでした。

onoyoko
質問者

補足

サーバーはapacheを使用していますが、Win用かは、わかりません、Apache/1.3.27と書いてあります。 環境がちょっと違うかもしれませんが、name.xmlは /index.htmlと同じ階層ですので $doc->load("name.xml");でいいんですよね? ノードの取得は変更してみましたが、表示されません。 エラーメッセージは Fatal error: Call to a member function on a non-object in /usr/local/apache/htdocs/test.php on line 6 とでます。

すると、全ての回答が全文表示されます。

専門家に質問してみよう