Пройдите xml в JavaScript

0

У меня есть 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());
});

Любые исправления для этого. Благодарю.

  • 0
    имя узла - JobId, но вы используете 'jobID', опечатка?
  • 0
    Да, опечатка, это должен быть JobId, я отредактирую это выше.
Показать ещё 6 комментариев
Теги:
xml-parsing

1 ответ

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

  • 0
    Спасибо друг. Это действительно сработало! Оценил.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню