[英]Error parsing XML file in JavaScript
我正在尝试解析一个简单的XML文件,但是在尝试获取所需的值时遇到了麻烦。 我收到的当前错误消息是node不是对象或为null。 我正在IE 6、7,FF 2、3上进行测试
这是XML文件:
<bookstore>
<appSettings>
<add key="myKey" value="myTargetValue"/>
</appSettings>
</bookstore>
这是我要使用的脚本:
<html>
<head>
<title></title>
</head>
<script type="text/javascript">
if (window.XMLHttpRequest)
{
xhttp = new window.XMLHttpRequest()
}
else
{
xhttp = new ActiveXObject("Microsoft.XMLHTTP")
}
xhttp.open("GET","test.xml",false);
xhttp.send("");
xmlDoc=xhttp.responseXML;
alert(xmlDoc.xml)
var xpath = "/bookstore/appSettings/add[@key='myKey']";
var node = xmlDoc.selectSingleNode(xpath);
alert(node.getAttribute("value"));
</script>
<body>
</body>
</html>
请指教。 谢谢。
我强烈建议您使用jQuery之类的库来使您的生活更轻松-不再需要document.getElementById()
ing! 在jQuery中,您可以执行以下操作:
$.ajax({
type: 'GET',
url: 'test.xml',
dataType: 'xml',
success: processXml
});
function processXml(xml)
{
xml = $(xml);
var value = xml.find('bookstore appSettings add[key=myKey]').attr('value');
alert(value);
}
编辑:我对XPath不太熟悉,所以我想我会解释一下find()
调用,以防我误读了您想从XML中选择的内容。 jQuery使用CSS选择器语法。 因此,该find()
将选择具有等于myKey
的key
属性的add
节点,这些节点是appSettings
元素,该子元素是bookstore
元素的子元素。
对于Firefox,评估Xpath的方法不正确。
请参阅https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript,以获得有关在Firefox中使用XPath的良好介绍。
另请参阅http://www.w3.org/TR/xpath了解XPath详细信息
例如,您将需要
var node = xmlDoc.evaluate("/bookstore/appSettings/add[@key='myKey']", xmlDoc, null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;
请参阅http://www.w3schools.com/XPath/xpath_examples.asp ,以了解如何在IE和Firefox中完成此操作
为了确保您的XML正确返回,您能否更改代码:
// ...
xhttp.send("");
xmlDoc=xhttp.responseXML;
alert(xmlDoc.xml)
我怀疑您没有从请求中获取XML数据。
在处理JavaScript之前,我将尝试直接在浏览器中输入URL来打开XML文档,并查看其是否正确显示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.