• 締切済み

xmlをjavascriptで読み込み、HTMLに表示させようとしてい

xmlをjavascriptで読み込み、HTMLに表示させようとしています。 IEでは出来たのですが、それ以外でのブラウザでどうしても読み込むことが出来ません。 簡単なxmlを作ります。例えばこの『これを表示』というテキストをfirefoxで表示させたい場合はどのように書けば良いのでしょうか? <?xml version="1.0" encoding="UTF-8"?> <items> <item>これを表示</item> </items> 今はこのようなjsを作っています。 アラートのAAAでxmlのテキストを表示させるようにしたいのですが・・・ ノードへのアクセス方法?が間違っているのはわかっているんです。ただ、検索して調べても色々出てきて、色々試しても上手くいかず・・・どうしても分がわかりません。 すみません、どなたかご指摘お願い致します!! xmlData = new XMLHttpRequest(); // XMLドキュメントをDOMで扱うためのオブジェクトを作る xmlData.overrideMimeType("sample.xml"); // XMLドキュメントを読み込む var AAA = xmlItemData.documentElement.childNodes[1].childNodes[1].text; alert(AAA); 宜しくお願い致します。

みんなの回答

回答No.3

XMLドキュメントを読み込むのはoverrideMimeTypeではありません。 参考にされている解説書、解説サイトを確認して下さい。 xmlData.overrideMimeType("application/xml"); .textでも行けるかもしれませんが、.nodeValueがXML-DOMでたしか標準だったと思います。 var AAA = xmlItemData.documentElement.childNodes[1].childNodes[1].nodeValue; IE7以上でXMLHttpRequestをサポートしています。 インターネットオプションでサポートしないようにも出来ますので、XMLHttpRequestとActiveXObjectの両方をチェックする方が良いと思います。 また、ActiveXObjectでAjaxをサポートする標準的な方法はXMLDomではなく、 IE6ではMicrosoft.XMLHTTP、 それ以上ではMsxml2.XMLHttp.3.0、Msxml2.XMLHttp.2.0、Msxml2.XMLHttp、もしくはMsxml2.XMLHttp.4.0(など)のバージョンがあります。 どのバージョンがインストールされているかクライアントにより異なるため、最新の物から順番に全部のバージョンをチェックするのが良いと思います。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

No.1補足 "microsoft.XMLDOM" は、今は "MSXML2.DOMDocument" のはず。 それからajaxの方はとりあえず、....無視してください。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

IEでは出来たのですが、それ以外でのブラウザでどうしても読み込むことが出来ません。 本当ですか?逆じゃないですか!隠されたコードがあるんじゃないっすか? 普通は、(ajax) xmlData =(window.ActiveXObject)?new ActiveXObject("Msxml2.XMLHTTP"):new XMLHttpRequest(); か(static) var xmlData = (window.ActiveXObject)?new ActiveXObject('microsoft.XMLDOM'):document.implementation.createDocument("", "", null); みたいに、xmlDataを生成してにロードするような... .overrideMimeType("sample.xml"); // XMLドキュメントを読み込む ってどこにありました。引数はMIMEタイプと文字コードの指定じゃないんですか... ロードは xmlData.async=false; xmlData.load("sample.xml"); で、xmlDoc.documentElementでXMLのルートをDOMで扱うとか、 xmlData.responsXMLをDOMで扱うとか、 どの場合も、IEとそれ以外では、XMLのノードリストのアクセスがちょっと違うので nodeTypeとかをチェックしてないと自身のtextnodeを取るつもりが、atributeの値 を持ってきたりして.... それとも私が無知なのか....

yuurivv
質問者

補足

有難うございます! すみません、言葉が足りませんでした。 IEで成功したのはこのソースではありません。 ここに書いたのは、IE以外で動くものを模索している状態のソースです。 あと、ここに書いた私のソースは間違っていると思います。そいうか、本当にまだ初心者で理解が及んでいないので、違っていてもそれが分からないんです。 今はまだ拾ってきたものを片っ端から試してみている状態です。 申し訳ありません・・・。

関連するQ&A

  • PHPのDOMでXML読み込もうとしているのですが...

    PHPのDOMでXML読み込もうとしているのですが、getElementsByTagNameがうまくいきません。 PHPのバージョンは5です。 コードは以下のとうりです。 $document = new DomDocument('1.0'); $document -> Load('test.xml'); $items = $document -> getElementsByTagName('item'); if(!is_null( $items)){ echo count($items); echo "ok"; } XMLにitemノードは3つあるので、 echo count($items); で 3が返ってくると思うのですが、1しか返ってきません。 $items -> value でも何も表示されません。 でも cho "ok"; の ok は表示されます。 すみません。どなたかどこが間違っているのか教えていただけると助かります。

    • ベストアンサー
    • PHP
  • javascriptでXML IEとfireFox

    作成中のホームページで、条件を入力させてその条件に合ったデータ(XMLで管理)を表示する という内容のモノを作ろうとしています。 実際に一通り動く所までは出来たのですが、IEでしか動作せず Firefox等の他ブラウザだと動作しません。 調べてみると、ActiveXObjectが使えないようなのですが どういう方法で実装すると動作するようになるのでしょうか。 よろしくお願いします。 ----------以下ソース一部---------- // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "list", "") // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false objDoc.load("msch.xml") var objRootNode = objDoc.documentElement.childNodes =======================補足======================= 下記のようにやってみたのですが、jsのエラーが起り原因がわからないです。※fireFoxのみIEでは動作確認済 if (window.ActiveXObject) { //for IE // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false // 曲情報の読込み objDoc.load("msch/msch.xml") // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") } else { //for Firefox // XML ドキュメントオブジェクト生成 var xhttp = new XMLHttpRequest(); xhttp.open("GET", "msch/msch.xml", false); xhttp.send(null); var objDoc = xhttp.responseText; window.alert(objDoc); // ワーク用の XML ドキュメントオブジェクト var xhttp2 = new XMLHttpRequest(); xhttp2.open("GET", "msch/msch.xml", false); xhttp2.send(null); var objDocWk = xhttp2.responseText; window.alert(objDocWk); } // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "musiclist", "") // 曲情報のルートノードを取得 var objRootNode = objDoc.documentElement.childNodes エラー内容が objDocWk.createNode is not a function  と objDoc.documentElement is undefined   です。

  • domでのXML作成について

    PHP4.2のdomを使い、下記のようなXMLを作成したいです。 しかし、Itemのノードに対して、NUMBERとNAMEという子ノードを2つつけるやり方が分からず困っています。 PHPは書いて見たのですが、上手くいっていません。 教えていただけると助かります。 宜しくお願いします。 【作成したいXML】 <Response> <Items> <Item> <NUMBER>47</NUMBER> <NAME>沖縄県</NAME> </Item> </Items> </Response> 【PHP】 $dom = domxml_new_doc("1.0"); $Response = $dom->create_element("Response"); $root = $dom->append_child($Response); $Items = $dom->create_element("Items"); $Item = $dom->create_element("Item"); $NUMBER = $dom->create_element("NAME"); $text1 = $dom->create_text_node("47"); $NUMBER->append_child($text1); $NAME = $dom->create_element("NAME"); $text2 = $dom->create_text_node("沖縄"); $NAME->append_child($text2); $Item->append_child($NAME); $Items->append_child($Item); $root->append_child($Items);

    • ベストアンサー
    • PHP
  • chromeでxmlをJSで表示するには?

    chromeだとエラーで表示できません。 どうすればいいのでしょうか? window.onload=function(){ Docm = new ActiveXObject('microsoft.XMLDOM'); Docm.async = false; Docm.load('xmlsrc'); var string = ""; if(Docm.documentElement.hasChildNodes()) { var i = 0; var n_num = Docm.documentElement.childNodes.length; while (i < n_num) { string += Docm.documentElement.childNodes.item(i).text += " "; i++; } } else { string +="子ノードはありません。"; } hyouji.innerHTML = string; }

  • 二つの XML 文書を結合する方法は?

    DOM で XML 文書を結合する例を探していたら、下記のものが見つかりました。 http://www.atmarkit.co.jp/fxml/askxmlexpert/020merge/merge_sample.html これを参考に、PHP5 でテストするために、下記のスクリプトを作成しました。 <?php $r1 = new DomDocument; $r1->loadXML("<Items><Item>a</Item></Items>"); $r1rt = $r1->documentElement; $r2 = new DomDocument; $r2->loadXML("<Item>b</Item>"); $r2rt = $r2->documentElement; $r1rt->insertBefore($r2rt,null); $r1->encoding = "utf-8"; print $r1->saveXML(); ?> このスクリプトを実行すると、insertBefore のところで例外が発生しエラーになってしまいます。何が悪いのでしょうか? 最終的にやりたいのは XML 文書を結合するということなので、DOM にはこだわりません。何か良い方法があれば、お知恵をお貸し下さい。

    • 締切済み
    • XML
  • javascriptのxml読み込みFireFoxにて

    htmlで外部javascriptを読み込んでxmlの読み込みをしています。 htmlは <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>無題ドキュメント</title> <script language="JavaScript" src="xmlSearch.js"></script> </head> <body onload="display()"> <div id="poem" align="center"></div> </body> </html> です。 javascriptは function display() { if(document.all){ xml_doc = new ActiveXObject("Microsoft.XMLDOM"); }else{ xml_doc = document.implementation.createDocument("", "", null); } xml_doc .async = false; xml_doc.load("flv.xml"); var root = xml_doc.documentElement; var book = root.childNodes; document.getElementById("poem").innerHTML = book.item(0).text; } xmlは <?xml version="1.0" encoding="UTF-8"?> <video> <pass>flv/video1.flv</pass> </video> です。 しかしこれだとFireFoxでは何も表示されません。 どなたか原因が分かる方いませんか?

  • XML を JavaScript で表示したい

    初心者です。XML の属性を JS で表示したいのですが、属性の表示をJSで記入すると属性部分(?)が「null」と表示されるだけで元の XML の内容が正しく反映されません。以下、html のコメントした部分が自分の足したコードですが、何が間違っているのかご教示いただけると有り難いです。宜しくお願いします。 ---XML-[orders.xml]------------------ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE orders SYSTEM "orders.dtd"> <orders> <order> <customerid limit="1000">1111111</customerid> <status>発送済み</status> <item instock="Y" itemid="SA15"> <name>商品名ABC</name> <price>825.00</price> <qty>1</qty> </item> </order> </orders> ---/XML------------------- ---DTD--[orders.dtd]----------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE orders SYSTEM "orders.dtd"> <orders> <order> <customerid limit="1000">1111111</customerid> <status>発送済み</status> <item instock="Y" itemid="SA15"> <name>商品名ABC</name> <price>825.00</price> <qty>1</qty> </item> </order> </orders> ---/DTD------------------- ---html--[hoge.html]----------------- <?xml version = "1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">​ <html xmlns = "​http://www.w3.org/1999/xhtml">​ <head> <title>A Parser Test</title> <script type="text/javascript"> var tab="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" function printElement(indent, node) { var i; if (node.nodeType == 3) {document.write("<br />" +indent + node.nodeValue); document.write("<br />" +indent + "attributes: "+ node.attributes);} <!--この1行を足しました。誤動作しています(TT)--> else { document.write("<br />" +indent + "[" + node.Name + "]"); for (i = 0; i < node.childNodes.length; i++) { printElement(indent+tab, node.childNodes[i]); } document.write("<br />" +indent + "[/" + node.nodeName + "]"); } } var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("orders.xml") if (xmlDoc.parseError.errorCode != 0) { document.write("<br />Error Code: "); document.write(xmlDoc.parseError.errorCode); document.write("<br />Error Reason: "); document.write(xmlDoc.parseError.reason); document.write("<br />Error Line: "); document.write(xmlDoc.parseError.line); document.write("<br />"); } else { document.write("<strong>ファイルはパーサーを通りました</strong><br />"); document.write("<p /><h1>ツリー構造の表示</h1><p />") printElement("", xmlDoc.documentElement); } </script> </head> <body> </body> </html> ---/html-------------------

  • VBscriptでXMLデータの抽出に関する質問

    教えて下さい。以下のようなXMLファイルがあります。 <?xml version="1.0" encoding="Shift-JIS"?> <ROOT> <INFO> <NO>0001</NO> <NAME>ABC</NAME> <COMMENT> </COMMENT> <AGE>30</AGE> </INFO> </ROOT> これを以下のようにVBScriptにてデータを取り出したいです。 Dim DOM, docRoot, node, nodeList, i, m Dim objADO, objADO2 Dim objRS Dim sqlstmt, strSQL Dim no, comment 'DOMオブジェクト生成 Set DOM = CreateObject("Microsoft.XMLDOM") '同期モード DOM.async = True 'XMLを読み込む DOM.load("11.xml") 'ルートセット Set docRoot = DOM.documentElement 'ノードの設定 Set nodeList = docRoot.selectNodes("/ROOT/INFO") 'ループ For Each node In nodeList For i = 0 to node.ChildNodes.length - 1 Select case node.childNodes(i).nodeName case "NO" no = node.childNodes(i).firstChild.nodeValue case "COMMENT" comment = node.childNodes(i).firstChild.nodeValue End select Next Next ところがCOMMENTタグのようにデータが空のものがあると 「オブジェクトがありません」とエラーになります。 if Not IsNull(node.childNodes(i).firstChild.nodeValue) then というようにもやってみましたが、これでも同じエラーとなってしまいます。 何か方法はないでしょうか?アドバイスを宜しくお願いします。

    • ベストアンサー
    • XML
  • xmlファイルが生成されない

    <?php //DomDocumentを呼び出す $dom = new DomDocument('1.0','UTF-8'); //要素ノード[document]を追加 $document = $dom->appendChild($dom->createElement('document')); //新しい要素をdocumentの子要素として挿入する $document->appendChild($dom->createElement('name','名前です')); $document->appendChild($dom->createElement('text','テキストです。')); //字下げや空白を考慮してきれいに整形した出力を行う $dom->formatOutput = true; //同階層にtest.xmlとして保存 $dom->save('test.xml'); //出力 echo $dom->saveXML(); ?> のように、同じディレクトリ内にXMLファイルを生成するphpプログラムを作成してみたのですが、 ブラウザからこのPHPファイルにアクセスしてもXMLファイルが作られません。どうすれば良いのでしょうか。 なにかphp,apache等の設定をしてないからでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • XML の属性部分を JavaScript で表示したい (誤動作してます)

    初心者です。XML の属性を JS で表示したいのですが属性の表示をJSで記入すると属性部分(?)が「null」と表示されるだけで元の XML の内容が正しく反映されません。何が間違っているのかご教示いただけると有り難いです。宜しくお願いします。 ---XML-[orders.xml]------------------ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE orders SYSTEM "orders.dtd"> <orders> <order> <customerid limit="1000">1111111</customerid> <status>発送済み</status> <item instock="Y" itemid="SA15"> <name>商品名ABC</name> <price>825.00</price> <qty>1</qty> </item> </order> </orders> ---/XML------------------- ---DTD--[orders.dtd]----------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE orders SYSTEM "orders.dtd"> <orders> <order> <customerid limit="1000">1111111</customerid> <status>発送済み</status> <item instock="Y" itemid="SA15"> <name>商品名ABC</name> <price>825.00</price> <qty>1</qty> </item> </order> </orders> ---/DTD------------------- ---html--[hoge.html]----------------- <?xml version = "1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns = "http://www.w3.org/1999/xhtml"> <head> <title>A Parser Test</title> <script type="text/javascript"> var tab="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" function printElement(indent, node) { var i; if (node.nodeType == 3) {document.write("<br />" +indent + node.nodeValue); document.write("<br />" +indent + "attributes: "+ node.attributes);} <!--この1行を足しました。誤動作しています(TT)--> else { document.write("<br />" +indent + "[" + node.Name + "]"); for (i = 0; i < node.childNodes.length; i++) { printElement(indent+tab, node.childNodes[i]); } document.write("<br />" +indent + "[/" + node.nodeName + "]"); } } var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("orders.xml") if (xmlDoc.parseError.errorCode != 0) { document.write("<br />Error Code: "); document.write(xmlDoc.parseError.errorCode); document.write("<br />Error Reason: "); document.write(xmlDoc.parseError.reason); document.write("<br />Error Line: "); document.write(xmlDoc.parseError.line); document.write("<br />"); } else { document.write("<strong>ファイルはパーサーを通りました</strong><br />"); document.write("<p /><h1>ツリー構造の表示</h1><p />") printElement("", xmlDoc.documentElement); } </script> </head> <body> </body> </html> ---/html-------------------

    • 締切済み
    • XML