未捕获的TypeError:Object#<object>没有方法'setProperty'</object>

时间:2013-04-06 12:20:20

标签: javascript

我在javascript中使用以下代码

text = LxmlHttp.responseText;
parser = new DOMParser();
xmlDoc = parser.parseFromString(text, "application/xml");
xmlDoc.setProperty('SelectionLanguage', 'XPath');

我收到此错误:Uncaught TypeError: Object #<Object> has no method 'setProperty'

请帮我解决问题。

TIA ..

嗨菲利克斯, 我有以下xml结构

<?xml version="1.0"?>
<response status="200">
  <ns3:op xmlns="http://xxx.com/details/" 
              xmlns:ns2="http://xxx.com/mgmt/" 
              xmlns:ns3="http://xxx.com/list/">
    <ns2:ntfs count="140">
      <ns2:ntf>
        <ns2:Nid>4687807</ns2:Nid>
      </ns2:ntf>
    </ns2:ntfs>
  </ns3:op>
</response>

我必须在IE 7,IE 8,IE 9,FF,safari和chrome

中阅读

命名空间索引可能不一样,可能会更改。 我需要独立于命名空间和浏览器解析xml。

我正在尝试这样做

var xmlDoc = new DOMParser().parseFromString(....);
xmlDoc.setProperty("SelectionNamespaces", 'xmlns:ns3="http://xxx.com/list/"');
xmlDoc.setProperty("SelectionLanguage", "XPath");
var op = xmlDoc.selectSingleNode("/response/ns3:op");

这仅适用于IE。 请让我知道如何在所有浏览器中解析xml。

1 个答案:

答案 0 :(得分:1)

  

这仅适用于IE

是。 setProperty是MSXML中的专有方法(实际上我根本不知道IE确实支持XPath)。

对于标准解决方案,请参阅MDN's article Using XPath,赞成document.evaluate。您应该使用功能检测来检查它是否可用,如果没有,则回退到document.selectSingleNode