在javascript中遍历xml

时间:2014-05-13 11:02:04

标签: javascript jquery xml xml-parsing

我有一个xml,格式如下:

Xml:
<JobsArray>
<TechJobs>
 <JobsAtSite>
  <SiteJob>
    <JobId>100</JobId>
    <Name>1bc</Name>
  </SiteJob>
  <SiteJob>
    <JobId>101</JobId>
    <Name>abc</Name>
  </SiteJob>
  <SiteJob>
    <JobId>102</JobId>
    <Name>xbc</Name>
  </SiteJob>
 </JobsAtSite>
<TechJobSite>
  <JobsAtSite>
   <SiteJob>
    <JobId>200</JobId>
    <Name>1bc</Name>
   </SiteJob>
  </JobsAtSite>
</TechJobSite>
</JobsArray>

我希望同一节点的JobId不等于100的那些作业。因此输出应采用以下格式:

<TechJobs>
 <JobsAtSite>
  <SiteJob>
    <JobId>101</JobId>
    <Name>abc</Name>
  </SiteJob>
  <SiteJob>
    <JobId>102</JobId>
    <Name>xbc</Name>
  </SiteJob>
 </JobsAtSite>
<TechJobSite>

这是我的解决方法,但它没有给我预期的结果。

$(xml).find("SiteJob").filter(function () {
    return $(this).find("JobId").text().toLowerCase() !== "100";
}).each(function () {
    console.log($(this).parent());
});

对此有任何修复。感谢。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

$(xml).find("SiteJob:contains('100')").filter(function () {
    return true;
}).parent().find("SiteJob").filter(function () {
    return $(this).find("JobId").text().toLowerCase() !== "100";
}).each(function () {
    console.log($(this).find("JobId").text());
});

jsfiddle DEMO