我试图在ajax调用中用javascript解析xml数据。但是responseXML返回null值。这是我的代码
<script language="javascript">
if(window.addEventListener)
{
window.addEventListener("load",getXML,false);
}
else if(window.attachEvent)
{
window.attachEvent("onload",getXML);
}
function getXML()
{
var xhr = new XMLHttpRequest();
xhr.open("GET","myxml.xml",true);
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
{
//alert("got response");
var root = xhr.responseXML;
alert(root);
}
}
xhr.send(null);
}
</script>
这是我的“myxml.xml”文件
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<child-1>
<grandChild1_1>textOfGrandChild1_1</grandchild1_1>
<grandChild2_1>textOfGrandChild2_1</grandchild2_1>
<grandChild3_1>textOfGrandChild3_1</grandchild3_1>
</child-1>
<child-2>
<grandChild1_2>textOfGrandChild1_2</grandchild1_2>
<grandChild2_2>textOfGrandChild2_2</grandchild2_2>
<grandChild3_2>textOfGrandChild3_2</grandchild3_2>
</child-2>
<child-3>
<grandChild1_3>textOfGrandChild1_3</grandchild1_3>
<grandChild2_3>textOfGrandChild2_3</grandchild2_3>
<grandChild3_3>textOfGrandChild3_3</grandchild3_3>
</child-3>
</root>
当我尝试
时alert(xhr.responseText)
它显示了xml文件。但是当使用responseXML时它给出了null值。问题出在哪里?
答案 0 :(得分:1)
您的XML不正确,因为它区分大小写,已更改grandchild1_1 to grandChild1_1
并且有效。
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<child-1>
<grandChild1_1>textOfGrandChild1_1</grandChild1_1>
<grandChild2_1>textOfGrandChild2_1</grandChild2_1>
<grandChild3_1>textOfGrandChild3_1</grandChild3_1>
</child-1>
<child-2>
<grandChild1_2>textOfGrandChild1_2</grandChild1_2>
<grandChild2_2>textOfGrandChild2_2</grandChild2_2>
<grandChild3_2>textOfGrandChild3_2</grandChild3_2>
</child-2>
<child-3>
<grandChild1_3>textOfGrandChild1_3</grandChild1_3>
<grandChild2_3>textOfGrandChild2_3</grandChild2_3>
<grandChild3_3>textOfGrandChild3_3</grandChild3_3>
</child-3>
以下是Plunker
谢谢!
答案 1 :(得分:1)
您的XML无效,案例很重要
<grandChild1_1>textOfGrandChild1_1</grandchild1_1>
^ ^
所有结束标记在名称中都有错误的驼峰大小写。