2013-07-23 28 views
0

我想用java腳本解析XML文件。實際上,我閱讀了許多教程,以瞭解如何正確解析XML文件中的數據,並發現我的方式正確。 關於loadXMLDoc(DNAME)功能,我傳遞給loadXMLDoc功能的XML文件的路徑,如下所示:使用javascript解析xml文件並不能提供所需的結果

var dname = "D:\files\files\Schriftsteller.xml"; 
function loadXMLDoc(dname) 

但仍解析不給我想要的結果,我想顯示的名稱下面的標籤

<name>Jane Austin</name> 

但網絡瀏覽器不顯示它,我使用的是Chrome。 請,(1)讓我知道我的錯誤在哪裏? (2)什麼擴展解析器文件應在(.HTML/.js文件)保存

請找到XML文件和Java腳本文件下

XML文件:

<?xml version="1.0" ?> 
    <Schriftsteller> 
    <Englischsprache> 
     <Dichtung> 
     <fueller> 
     <name>Jane Austin</name> 
       <name>Rex Stout</name> 
       <name>Dashiell Hammett</name>  
     </fueller> 
    </Dichtung> 
</Englischsprache> 
    </Schriftsteller> 

JavaScript的File.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\Schriftsteller.xml"; 
     function loadXMLDoc(dname) 
       { 
       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; 
       } 

       function findWriter() 
       { 
       var schriftstellerKnoten, SpracheKnoten; 
       var FuellerKnoten, DichtungKnoten, Anzeige; 

       myXML = document.all(dname).XMLDocumentalert(dname); 

       SchriftstellerKnoten = myXML.documentElement; 
       SpracheKnoten = SchriftstellerKnoten.firstChild; 
       DichtungKnoten = SpracheKnoten.firstChild; 
       FuellerKnoten = DichtungKnoten.firstChild; 
       NameNode = FuellerKnoten.firstChild; 
       Anzeige = NameNode.firstChild.nodeValue; 
       document.write(Anzeige); 
       } 
      </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> 
</body> 

+1

這甚至與格式良好的XML不相近。 – CBroe

+0

你爲什麼這麼認爲? –

回答

1

首先你的XML的文檔必須很好的形成。

因此,對於您打開的每個標籤添加另一個標籤來關閉它(就像您使用名稱標籤一樣)。結束標記必須與開頭相同,除了開頭的/

此外,您還必須觀察大小寫(格式良好的XML區分大小寫)。標籤

<EnglischSprache><Englischsprache>

不同試試這樣說:

<?xml version="1.0"?> 
<Schriftsteller> 
    <EnglischSprache> 
    <Dichtung> 
     <fueller> 
     <name>Jane Austin</name> 
     <name>Rex Stout</name> 
     <name>Dashiell Hammett</name>  
     </fueller> 
    </Dichtung> 
    </EnglischSprache> 
</Schriftsteller> 

然後在JS-文件,也許你應該嘗試調用該函數loadXMLDoc。

看起來像你只是定義它。現在

<body onload="loadXMLDoc(dname)"> 

更好:

試試這樣嗎?

+0

我修改了xml文件並按照你的建議添加了onload()函數,但是仍然沒有發生解析。請參閱上面修改後的帖子。 –

+0

還有很多小錯誤: - 什麼是'document'? - 應該顯示哪裏?你甚至不會說應該在你的HTML頁面上出現任何東西(也許你的意思是'Documentar.show.me.value'在你的頁面上顯示了一些東西,但是在我的生活中我沒有看到這樣的東西)嘗試賦值使用'document.getElementById(「exampleId」)。innerHTML'對你的身體的元素進行元素轉換 –

+0

如果我使用以下語法: –