javascript - 在 jQuery 中选择具有命名空间的节点

标签 javascript jquery xml namespaces

我使用 YQL 通过 JSONP 获取数据,它返回一个 XML 字符串。我使用 $.parseXML 解析它并将其放入 jQuery 选择器中并尝试选择一个节点。但是,它包含一个命名空间(例如,yweather:),并且 jQuery 似乎无法正常工作。

来自other SO answers他们建议这样做 \\: 可以解决这个问题。确实如此,但仅当我收到的数据是 XML 时(我的是 JSONP。)

$.ajax({
    url: "http://query.yahooapis.com/v1/public/yql",
    data: {
        q: "select item from weather.forecast where location=48907",
        format: "jsonp"
    },
    dataType: "jsonp"
}).success(function(data){
    var xml = $.parseXML(data.results[0]);
    console.log($("yweather\\:condition", xml));
});

它与任何内容都不匹配。

最佳答案

无法弄清楚为什么它不起作用,其他答案也建议使用 \\ 转义 : 。但它不起作用。所以我尝试过这种方式并且有效。这也相当于 jQuery 的 find 方法,并且它正在工作 demo

代码是

  var xml = $.parseXML(data.results[0]);
  xml = $(xml).find('channel item');
  var weatherList = xml.find('*').filter(function(){
     return this.tagName === "yweather:condition";
  });
  console.log(weatherList);

希望这有帮助。

关于javascript - 在 jQuery 中选择具有命名空间的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184599/

相关文章:

javascript - 我们如何在 Nuxt?Vuejs 项目中仅包含来自 lodash 的必需模块?

javascript - 如何用jquery覆盖css

javascript - 根据 getJSON 数据的响应显示图像

java - for 循环中的 XPath 计算始终返回第一次迭代中节点的值

sql - 基于值和条件的 Oracle XMLTYPE 提取

javascript - 从 Polymer 中的发送者获取数据值

对象的Javascript变量赋值返回字符串

xml - 匹配 xslt 的子字符串模板

javascript - 在 Mithril JS 中等待 AJAX 请求时如何显示微调器?

jquery - 如何修复设备屏幕上的 mask