1

我正在开发一个应用程序,单击一个按钮,程序调用存储在 XML 文件中的信息以<span>使用 JavaScript 显示在标签中;

    function viewXMLFiles() {

        console.log("viewXMLFiles() is running");

        var xmlhttp = new HttpRequest();
            xmlhttp.open("GET", "TestInfo.xml", false);
            xmlhttp.send;

        console.log("still running");

        var xmlDoc = xmlhttp.responseXML;

        console.log("getting tired");

        document.getElementById("documentList").innerHTML = xmlDoc.getElementByTagName("documentList")[0].childNodes[0].nodeValue;
        document.getElementById("documentList").innerHTML = xmlDoc.getElementByTagName("documentList")[1].childNodes[1].nodeValue;

        console.log("done");
    }

然后是调用它的 HTML(以及显示 XML 文件的位置);

<button onclick = "viewXMLFiles();">View Document Info</button><br>

<span id = "documentList">
    <!--This is where the XML will be loaded into-->
</span>

XML文件是;

<document_list>

<document>

    <document_name>Holidays.pdf</document_name>

    <file_type>.pdf</file_type>

    <file_location></file_location>

</document>

<document>

    <document_name>iPhone.jsNotes.docx</document_name>

    <file_type>.docx</file_type>

    <file_location></file_location>

</document>

</document_list>

在控制台中,出现第一条消息,但没有任何反应,仅此而已。但我真的(就像,真的很新)对 XML 和解析并且不明白出了什么问题。你能帮忙吗?

4

4 回答 4

2

使用它是因为您只有一个用于 documentlist 的子节点

document.getElementById("documentList").innerHTML = xmlDoc.getElementByTagName("documentList")[0].childNodes[0].nodeValue;
document.getElementById("documentList").innerHTML = xmlDoc.getElementByTagName("documentList")[1].childNodes[0].nodeValue;
于 2013-03-20T12:03:09.590 回答
2

笔记:

  1. 使用 getElementsByTagName
  2. 您的 xml 中没有 documentList 标记
  3. 标记文档是您的 xml 中唯一的数组,而不是 document_list

    function viewXMLFiles() {
    
      console.log("viewXMLFiles() is running");
    
      xmlhttp = new XMLHttpRequest();
      xmlhttp.open("GET","TestInfo.xml",false);
      xmlhttp.send();
      xmlDoc = xmlhttp.responseXML; 
    
      console.log("still running");
    
    
      var getData = xmlDoc.getElementsByTagName("document");
      console.log("getting tired");
    
      document.getElementById("documentList").innerHTML = getData[0].getElementsByTagName("document_name")[0].childNodes[0].nodeValue;
      document.getElementById("documentList1").innerHTML = getData[1].getElementsByTagName("document_name")[0].childNodes[0].nodeValue;
    
        console.log("done");
    }
    

再添加一个id为documentList1的span来执行上面的代码

于 2013-03-20T12:20:18.577 回答
1

我认为问题出在:

var xmlhttp = new HttpRequest();

它应该是:

var xmlhttp = new XMLHttpRequest();
于 2013-03-20T11:59:35.490 回答
0

如果你想显示每个文档的信息,你会想要这样的:

<html>
<head>

<script type="text/javascript">
function getMyXML() {

  console.log("viewXMLFiles() is running");

  xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET","TestInfo.xml",false);
  xmlhttp.send();
  xmlDoc = xmlhttp.responseXML; 

  console.log("still running");

  console.log("getting tired");

  document.getElementById("docname").innerHTML = xmlDoc.getElementsByTagName("document_name")[0].childNodes[0].nodeValue;
  document.getElementById("filetype").innerHTML = xmlDoc.getElementsByTagName("file_type")[0].childNodes[0].nodeValue;

  document.getElementById("docname2").innerHTML = xmlDoc.getElementsByTagName("document_name")[1].childNodes[0].nodeValue;
  document.getElementById("filetype2").innerHTML = xmlDoc.getElementsByTagName("file_type")[1].childNodes[0].nodeValue;

    console.log("done");
}
</script>
</head>
<body>

<input type="button" onclick="getMyXML();" value="Get XML" />

<div id="doclist">
<h2>Document 1</h2>
<label>Docname: </label><span id="docname"></span><br/>
<label>Filetype: </label><span id="filetype"></span><br/>

</div>

<div id="doclist">
<h2>Document 2</h2>
<label>Docname: </label><span id="docname2"></span><br/>
<label>Filetype: </label><span id="filetype2"></span><br/>
</div>

</body>
于 2013-03-20T13:12:19.777 回答