jQuery以获取XML中的匹配节点

一点背景:我使用XSLT在页面上呈现了一些XML,但是我们决定使它更具交互性,所以现在我正在进行jQuery.ajax调用以返回XML,我正在用JavaScript解析它。

我已经能够使用像这样的代码从中提取特定节点

var qpPlanNode = $(xml).find('MyNode'); var qpPlanNum = $(qpPlanNode).children('PLANNUM').text(); 

这将计划编号转换为qpPlanNum。 但在那个XML中我有类似的东西

   123  PreTax 1234   AfterTax 456   PreTax 234    

我想提取所有具有TYPE特定值的SOURCE节点。 我找不到一个简单的jQuery选择器,它会做到这一点。 在XSLT中,我正在做 。 什么是JQuery等价物?

我可能会使用.parseXML()

 var xml = "123  PreTax 1234   AfterTax 456   PreTax 234  " xmlDoc = $.parseXML(xml) $xml = $(xmlDoc) $source = $xml.find('TYPE:contains("AfterTax")').parent(); console.log($source); 

http://jsfiddle.net/JdZzH/

或者
但是,我不能让它在一个实例中正常工作

  console.log($('TYPE:contains("AfterTax")').parent('source')); 

应该这样做,但是,我无法让jsfiddle工作。 它继续将视为父级,但是,

 $('TYPE:contains("AfterTax")').css('text-decoration', 'underline'); 

按预期工作,我会在jsfiddle以外的地方尝试这个。

Utilmately

我认为.parseXML()和:contains()正是你要找的。

我偶然发现了这个,看起来它正在起作用:

 var pretaxSources = $(qpPlanNode).find('SOURCE:has(TYPE:contains("PreTax"))'); 

有没有人看到任何理由不这样做?

更好的是,我可以使用多种类型组合

 var pretaxSources = $(qpPlanNode).find('SOURCE:has(TYPE:contains("PreTax"),TYPE:contains("Employee"))');