2013-07-24 140 views
0

下面發佈的函數是解析XML文件並顯示標籤名稱「employee」。 但是,當我在Web瀏覽器(Chrome)中加載.HTML文件(其中包括下面發佈的函數)時,該函數不會顯示變量「x」的內容,我不知道該代碼中的錯誤。用Javascript解析XML文件時出錯

請給我一個例子,說明如何顯示XML文件的內容。

HTML文件

<html> 
<head> 
<meta content="text/html;charset=utf-8" http-equiv="Content-Type"> 
<meta content="utf-8" http-equiv="encoding"> 
    <link rel="stylesheet" href="readXML.css" type="text/css"> 
    <title>Read First Child</title> 

     <!-- <xml ID="Schriftsteller" SRC="D:\files\files\Schriftsteller.xml"></xml> --> 

      <script language="JavaScript"> 

      var dname = "D:\files\files\xml.xml"; 
       function findWriter() 
       { 
       var xmlDoc; 
        if (window.XMLHttpRequest) 
        { 
         xmlDoc=new window.XMLHttpRequest(); 
         xmlDoc.open("GET",dname,false); 
         xmlDoc.send(""); 
         return xmlDoc.responseXML; 
        } 
       // IE 5 and IE 6 
        else if (ActiveXObject("Microsoft.XMLDOM")) 
        { 
         xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
         xmlDoc.async=false; 
         xmlDoc.load(dname); 
         return xmlDoc; 
        } 
         alert("Error loading document!"); 
         return null; 

       var x, xmlDOC; 

       xmlDoc = loadXMLDoc("D:\files\files\xml.xml"); 
       x = xmlDoc.documentElement.getElementsByTagName("employee"); 
       document.Write(x); 
       } 
      </script> 
    </head> 
    <body onload="loadXMLDoc(dname)"> 
    <span ID="blueBack">Read firstChild</span> 
    <div> 
    <form name="show" 
    <input type=text name="me"> 
    <input type="button" value="Display Writer" 
    onClick="findWriter()"> 
    </form> 
    </div> 

xml.xml

< ?xml version="1.0" encoding="UTF-8" ?> 
<company> 
    <employee id="001" >John</employee> 
    <turnover> 
     <year id="2000">100,000</year> 
     <year id="2001">140,000</year> 
     <year id="2002">200,000</year> 
    </turnover> 
</company> 

回答

0

我覺得你的問題是,你正在試圖獲得來自員工信息XML。在這裏你設置X您應按如下方式更改行:

x = xmlDoc.getElementsByTagName("employee"); 

UPDATE:

我道歉 - 我應該看着更深入你的代碼。我發現許多問題/錯誤,但幸運的是,我最近不得不做一些XML解析,所以我的基礎知識,你想要什麼如下:

<html> 
    <head> 
     <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> 
     <meta content="utf-8" http-equiv="encoding"> 
     <link rel="stylesheet" href="readXML.css" type="text/css"> 
     <title>Read First Child</title> 

     <!-- <xml ID="Schriftsteller" SRC="D:\files\files\Schriftsteller.xml"></xml> --> 

     <script language="JavaScript"> 

     var dname = "D:\files\files\xml.xml"; 
     var xmlDoc; 
     if (window.XMLHttpRequest) { 
     xmlDoc = new XMLHttpRequest(); 
     } else { 
     // IE 5/6 
     xmlDoc = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     function findWriter() { 
      xmlDoc.open("GET",dname,false); 
      xmlDoc.send(); 
      var xmlResponse = xmlDoc.responseXML; 
      var first = xmlResponse.getElementsByTagName("employee")[0]; 
      var name, id; 
      if(typeof(first.textContent) != 'undefined') 
       name = first.textContent; 
      else if(typeof(first.text) != 'undefined') 
       name = first.text; // IE 
      id = first.getAttribute('id'); 
      //console.log('Employee '+name+', ID '+id); 
      document.write('Employee '+name+', ID '+id+'<br>'); 
      var years = xmlResponse.getElementsByTagName("year"); 
      var year, sales; 
      for(var i=0; i<years.length; i++) { 
       year = years[i].getAttribute('id'); 
       if(typeof(years[i].textContent) != 'undefined') 
        sales = years[i].textContent; 
       else if(typeof(years[i].text) != 'undefined') 
        sales = years[i].text; // IE 
       //console.log('year '+year+' sales='+sales); 
       document.write('year '+year+' sales='+sales+'<br>'); 
      } 
      document.close(); 
     } 
     </script> 
    </head> 
    <body> 
     <span ID="blueBack">Read firstChild</span> 
     <div> 
     <form name="show"> 
      <input type=text name="me"> 
      <input type="button" value="Display Writer" 
       onClick="findWriter()"> 
     </form> 
     </div> 
    </body> 
</html> 

差點忘了:

你的XML樣本有一個小錯誤;更改第一行:

<?xml version="1.0" encoding="UTF-8" ?> 
+0

這也不起作用 –

+0

@Amr Bakri - 我希望我的更新答案有所幫助。在JavaScript中處理XML不是很簡單。如果您能夠控制數據輸入格式,請考慮使用JSON。 :) –

-1

我沒有看到很多回調。所以我的猜測是使你的代碼更異步可以幫助...但這裏是一個教程如何做這樣的事情與jQuery(著名的Javascript庫,幫助了很多)

http://think2loud.com/224-reading-xml-with-jquery/

+0

爲什麼投票?它是通過服務器上的webrequest訪問和解析文件並且不從網頁內部訪問文件系統的正確方式。 var dname =「D:\ files \ files \ xml.xml」; < - 不好! – silverfighter

+0

我還沒有投你的答案,我甚至不被允許。 –