Reputation: 85
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.
Upvotes: 0
Views: 87
Reputation: 6615
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());
});
Upvotes: 1