Question

I have an xml which is of the below format:

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>

I want those jobs where the JobId is not equal to 100 for the same node. So the output should be in the below format:

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

This is the workaround which i had, but it is not giving me the expected result.

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

Any fixes for this. Thanks.

Était-ce utile?

La solution

You could try this:

$(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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top