jQuery获取XML中的匹配节点
一点背景:我曾使用XSLT在页面上呈现一些XML,但我们决定使其更具交互性,因此现在我正在执行jQuery.ajax调用以返回XML,并使用JavaScript对其进行解析 我已经能够使用如下代码从中提取特定节点jQuery获取XML中的匹配节点,jquery,xml,Jquery,Xml,一点背景:我曾使用XSLT在页面上呈现一些XML,但我们决定使其更具交互性,因此现在我正在执行jQuery.ajax调用以返回XML,并使用JavaScript对其进行解析 我已经能够使用如下代码从中提取特定节点 var qpPlanNode = $(xml).find('MyNode'); var qpPlanNum = $(qpPlanNode).children('PLANNUM').text(); 这将计划编号输入到qpPlanNum中。但在XML中,我有如下内容 <xml&g
var qpPlanNode = $(xml).find('MyNode');
var qpPlanNum = $(qpPlanNode).children('PLANNUM').text();
这将计划编号输入到qpPlanNum中。但在XML中,我有如下内容
<xml>
<MyNode>
<PLANNUM>123</PLANNUM>
<SOURCE>
<TYPE>PreTax</TYPE>
<AMOUNT>1234</AMOUNT>
</SOURCE>
<SOURCE>
<TYPE>AfterTax</TYPE>
<AMOUNT>456</AMOUNT>
</SOURCE>
<SOURCE>
<TYPE>PreTax</TYPE>
<AMOUNT>234</AMOUNT>
</SOURCE>
</MyNode>
</xml>
123
税前的
1234
税后
456
税前的
234
我想提取所有具有特定类型值的源节点。我找不到一个简单的jQuery选择器可以做到这一点。在XSLT中,我做的是
。JQuery的等价物是什么?我可能会使用
但是,如果我应该这样做,我就很难让JSFIDLE正常工作。但是,它一直将
视为父对象
$('TYPE:contains("AfterTax")').css('text-decoration', 'underline');
正如预期的那样,我将在JSFIDLE之外的其他地方尝试此功能
巧妙地
我想,这就是你要找的东西。我刚刚偶然发现了这个,它似乎正在发挥作用:
var pretaxSources = $(qpPlanNode).find('SOURCE:has(TYPE:contains("PreTax"))');
有人知道为什么不会吗
更好的是,我可以使用
var pretaxSources = $(qpPlanNode).find('SOURCE:has(TYPE:contains("PreTax"),TYPE:contains("Employee"))');
我觉得很好,如果有用的话就去吧。它似乎足够简洁。
var pretaxSources = $(qpPlanNode).find('SOURCE:has(TYPE:contains("PreTax"))');
var pretaxSources = $(qpPlanNode).find('SOURCE:has(TYPE:contains("PreTax"),TYPE:contains("Employee"))');