在JavaScript中分析XML文件时出错
我试图解析一个简单的XML文件,但在获取所需的值时遇到了困难。我收到的当前错误消息说节点不是对象或为null。我正在测试两个,即6、7、FF 2、3 以下是XML文件:在JavaScript中分析XML文件时出错,javascript,xml,xpath,Javascript,Xml,Xpath,我试图解析一个简单的XML文件,但在获取所需的值时遇到了困难。我收到的当前错误消息说节点不是对象或为null。我正在测试两个,即6、7、FF 2、3 以下是XML文件: <bookstore> <appSettings> <add key="myKey" value="myTargetValue"/> </appSettings> </bookstore> 以下是我尝试使用的脚本: <html> &
<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>
if(window.XMLHttpRequest)
{
xhttp=newwindow.XMLHttpRequest()
}
其他的
{
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”)
}
open(“GET”,“test.xml”,false);
xhttp.send(“”);
xmlDoc=xhttp.responseXML;
警报(xmlDoc.xml)
var xpath=“/bookstore/appSettings/add[@key='myKey']”;
var node=xmlDoc.selectSingleNode(xpath);
警报(node.getAttribute(“值”);
请告知。谢谢。对于firefox,评估Xpath的方法不正确 有关在firefox中使用XPath的详细介绍,请参阅 有关XPath的详细信息,请参见 例如,您需要
var node = xmlDoc.evaluate("/bookstore/appSettings/add[@key='myKey']", xmlDoc, null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;
查看如何在IE和firefox中实现这一点,我强烈建议使用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);
}
Edit:我对XPath不太熟悉,所以我想我应该解释一下
find()
调用,以防我误读您试图从XML中选择的内容。jQuery使用CSS选择器语法。因此,find()
将选择add
节点,这些节点的key
属性等于myKey
,它们是appSettings
元素的后代元素,从bookstore
元素派生而来。为了确保XML正确返回,请更改代码:
// ...
xhttp.send("");
xmlDoc=xhttp.responseXML;
alert(xmlDoc.xml)
我怀疑您没有从请求中获取XML数据。在处理JavaScript之前,我会尝试在浏览器中直接打开XML文档,键入URL,看看它是否正确显示。您的XPath返回:这是您所期望的吗?哪里需要xmlDoc.evaluate?document.evaluate()是为DOM3 XPath支持浏览器感谢大家的帮助。。。Matt,你知道为什么它不能在IE6上工作吗?没关系,我认为它被我的浏览器安全性阻止了,再次感谢你的帮助。我仍然建议你试试jQuery——它消除了所有讨厌的浏览器依赖性(大部分情况下),比如必须对XMLHttpRequest进行对象检测。