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);
或者
但是,我不能让它在一个实例中正常工作
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"))');