繁体   English   中英

在JavaScript中解析XML文件时出错

[英]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()将选择具有等于myKeykey属性的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM