【问题标题】:How to use XPath in FireFox?如何在 FireFox 中使用 XPath?
【发布时间】:2012-03-07 01:56:45
【问题描述】:

我有一个网络应用程序,现在我想对其进行改进,以便它可以在 FireFox 中运行。我的问题是如何以跨浏览器的方式使用 XPath。

我有这个脚本:

var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        oXmlDoc.async = "false";
        oXmlDoc.loadXML(document.getElementById(MasterObj + "txtMenu").value);
        var xmlNodes = oXmlDoc.documentElement.selectNodes("/FormGeneratorEntity/GetMenu[TemplateID=" + obj.value + "]");
  var len = xmlNodes.length
        for (var i = 0; i < len; i++) {
   alert(xmlNodes.item(i).selectSingleNode('Title').text)
}

我的 xml 字符串如下所示:

 <FormGeneratorEntity><GetMenu><Title>MyTitle</Title><Val>MyValue<Val/></GetMenu></FormGeneratorEntity>

如何在 Firefox 中进行这项工作?

【问题讨论】:

  • 您是否尝试过切换到 css 选择器并使用 jQuery 或 sizzle? XPath 在浏览器 javascript 中的使用并不多。
  • ActiveXObject 是特定于 IE 的。

标签: javascript jquery firefox xpath cross-browser


【解决方案1】:

你会使用 jQuery 吗?如果是这样,这将是一个对浏览器更友好的解决方案。

【讨论】:

  • 是的,我在项目的某些地方使用 jquery。请让我知道如何在 jquery 中使用 xpath,因为 net 中的示例非常简单并且没有回答我的问题!谢谢胡安。
  • 请考虑我的字符串 XML 是这样的:MyTitle1 MyValue1MyTitle2 MyValue2
【解决方案2】:

您的问题不是“如何在 Firefox 中使用 XPath”,而是“如何从字符串创建 XML 文档(在 Firefox 中)”。

该问题的答案是DOMParser,更具体地说是parseFromString 方法:

oXmlDoc = new DOMParser().parseFromString(content_string, "text/xml"); 

在您当前的代码中实现:

var oXmlDoc,
    content_string = document.getElementById(MasterObj + "txtMenu").value;
if (window.DOMParser) {
    oXmlDoc = new DOMParser().parseFromString(content_string, "text/xml");
} else if (window.ActiveXObject) {
    oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    oXmlDoc.async = "false";
    oXmlDoc.loadXML(content_string);
} else {
    // Not supported. Do something
}

如果您仍在寻找有关 XPath 的优秀文档,请查看 Mozilla Developer Network: XPath

【讨论】:

  • 谢谢,但它不能解决我的问题,因为我想用 javascript 或 jquery 为我的 xml 字符串做 xquery。例如:/FormGeneratorEntity/GetMenu[TemplateID=20]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 2010-12-05
相关资源
最近更新 更多