解決済みの質問
今契約してるサーバーがSQLをつけるとものすごい金額になってしまうので。XMLに挑戦中です。
作ってみたのですが、ソースが間違ってる?のか表示できません、教えてください.
name.xml
<?xml version="1.0" encoding="shift-jis"?>
<test no="1">
<name>test</name>
<no>10</no>
<tel>123-456-789</tel>
</test>
test.php
<html>
<head>
<title>sample1</title>
</head>
<body>
<?php
$doc->load("name.xml");
$name = $doc->selectSingleNode("test");
$list = $name->selectNodes("*");
$no = $list->item(1);
$text = " 番号 " . $no . "<br>";
print $text;
?>
</body>
</html>
投稿日時 - 2004-08-06 06:24:02
えっと、その契約しているサーバでは 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
投稿日時 - 2004-08-06 15:52:14
お礼
エラーが出てしまうので、契約しているサーバー会社への確認をしてみます。
とてもよく理解できました、ありがとうございました。
投稿日時 - 2004-08-07 01:34:48
2人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(2件中 1~2件目)
$no 変数は <no> ノードを指していると思いますが
ノードの中のテキストノードを取得する為に
> $text = " 番号 " . $no . "<br>";
$text = " 番号 " . $no->text . "<br>";
に変更してみてください。
あと、私は Apache for Win32 に Windows 版 PHP を
利用したので
$doc->load("name.xml");
においては
$doc->load("D:\\folder\\name.xml");
みたいにフルパスで指定しないと正常に読み込んで
くれませんでした。
投稿日時 - 2004-08-06 10:10:23
補足
サーバーは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 とでます。
投稿日時 - 2004-08-06 10:32:18
OKWaveのオススメ
おすすめリンク