【问题标题】:Traverse xml in javascript在javascript中遍历xml
【发布时间】:2014-05-13 11:02:04
【问题描述】:

我有一个格式如下的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());
});

对此的任何修复。谢谢。

【问题讨论】:

  • 节点名称是 JobId 但您使用 'jobID',打错了吗?
  • 是的错字,应该是 JobId,我会在上面编辑。
  • 不,它没有,它只是一个错字。代码没有给出预期的结果。
  • 似乎工作正常:jsfiddle.net/rnG9M,我只得到 3 个结果...
  • 你想要什么样的过滤?您现在只从列表中删除任何具有 JobId 100 的内容...

标签: javascript jquery xml xml-parsing


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多