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

时间:2013-11-25 04:06:45

标签: 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));
});

它与任何东西都不匹配。

1 个答案:

答案 0 :(得分:1)

无法弄清楚为什么它不起作用,其他答案也建议:\\一起转义。但它没有用。所以我试过这种方式,它正在发挥作用。这也等于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);

希望这有帮助。