0

JavaScript: FireFox で次のコードを使用して、XML ファイルの内容を読み取りました: HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>javascript ?? xml??</title>  
<script type="text/javascript" src="readXML.js"></script> 
</head>  
<body>  
</body>  
</html>  

ジャバスクリプト:

readMyXML={
    init: function(){
        readMyXML.javaScriptReadXML();
    },

    javaScriptReadXML: function(){
        var xmlDoc =document.implementation.createDocument("", "", null);        
        //xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
        xmlDoc.async= false;                                         
        xmlDoc.load('PAS1.xml');              /* load XML file */
        //xmlDoc.load('myxml.xml');
        var objNodeList = xmlDoc.getElementsByTagName("Slide");
        var Node=objNodeList.item(0);
        var mytext=Node.getElementsByTagName("Context");

         alert("length="+mytext.item(0).Language);
     }  
}

window.addEventListener('load', readMyXML.init,false);

しかし、XML のコンテンツを取得しようとしても、アラートに undefined と表示されます。この問題を解決する方法。

XML は次のようなものです。

<?xml version="1.0" encoding="utf-8"?>
<Survey SurveyID="PAS1" Description="PAS first part">
<Slide SlideID="S-N1">
<Question>
<Context Language="English">We would like you to fill out a questionnaire </Context>

</Question>
<Input Optional="true">
<Nothing ChoiceID="1" />
</Input>
<Next />
</Slide>
4

1 に答える 1

0

return ステートメントが欠落しており、の body でthisキーワードを使用する代わりに、宣言されたオブジェクト プロパティを参照しinitているため、次のように書き換えます。

var readMyXML = {
    init: function(){
          this.javaScriptReadXML();
    },

    javaScriptReadXML: function(){
         var xmlDoc =document.implementation.createDocument("", "", null);        

         // xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
         xmlDoc.async= false;                                         
         xmlDoc.load('PAS1.xml');              /* load XML file */

         // xmlDoc.load('myxml.xml');
         var objNodeList = xmlDoc.getElementsByTagName("Slide");
         var Node=objNodeList.item(0);
         var mytext=Node.getElementsByTagName("Context");
         alert("length="+mytext.item(0).Language);
     }  
}
于 2013-01-30T21:49:13.177 に答える