Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery获取XML中的匹配节点_Jquery_Xml - Fatal编程技术网

jQuery获取XML中的匹配节点

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

一点背景:我曾使用XSLT在页面上呈现一些XML,但我们决定使其更具交互性,因此现在我正在执行jQuery.ajax调用以返回XML,并使用JavaScript对其进行解析

我已经能够使用如下代码从中提取特定节点

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"))');