计算节点数不起作用

时间:2012-07-07 07:12:58

标签: javascript xml xml-parsing

我有一个xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<food>
    <cuisine type="Chinese">
        <restaurant name = "Panda Express">
            <location id= "0"></location>
            <phone id = "1"></phone>
            <city id="2"></phone>
        </restaurant>
        <restaurant name = "Mr. Chau's">

        </restaurant>
    </cuisine>
    <cuisine type="Indian">
        <restaurant name = "Shan">

        </restaurant>
    </cuisine>
</food>

并且我正在尝试计算烹饪节点的数量这是我的代码,我知道它大部分正确但是当我尝试打印出节点列表的长度时它表示它是0

//starts talking to the xml document
        if(window.XMLHttpRequest){
            xmlhttp = new XMLHttpRequest();
        }else{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.open("GET","data.xml", false);
        xmlhttp.send();
        xmlData = xmlhttp.responseXML;


        //fills the first comboBox
        var sel = document.getElementById('CuisineList');
        cuisineList = xmlData.getElementsByTagName('cuisine');
        document.getElementById("test").innerHTML = cuisineList.length;

1 个答案:

答案 0 :(得分:0)

两个可能的答案:

A)XML有错误,您需要</phone> </city>。所以你需要解决这个问题。 :-)(但我猜这只是在问题中,而不是在你的真实数据中,因为如果它在你的真实数据中你不会得到0,我不会想到;你会得到错误。)

B)检查您的响应标头,可能是您的服务器没有返回具有正确MIME类型的XML。如果不是:

  1. 最佳答案是更正服务器配置,以便正确提供XML文件。

  2. 如果由于某种原因你无法做到这一点,你可以使用overrideMimeType强制XMLHttpRequest将响应视为XML:

    xmlhttp.open("GET","data.xml", false);
    xmlhttp.overrideMimeType("text/xml"); // <=== The new bit
    xmlhttp.send();
    xmlData = xmlhttp.responseXML;
    
  3. 如果您修复了它们,它可以正常工作:Live working copy | source