【问题标题】:Loop through an XML file and get parent node who doesn't have specific child node遍历 XML 文件并获取没有特定子节点的父节点
【发布时间】:2015-08-18 16:02:05
【问题描述】:

我的 XML 文件如下所示

<atom:entry>
  <atom:id>Alex Kane</atom:id>
  <atom:title type="text/html">Alex Kane</atom:title>
  <atom:author>
    <atom:uri>uid=wpsadmin,o=defaultWIMFileBasedRealm</atom:uri>
    <atom:name>uid=wpsadmin,o=defaultWIMFileBasedRealm</atom:name>
  </atom:author>       
  <wplc:field id="imagepath">/wps/wcm/connect/4a2dffd8-bf49-47f0-8b9a-5e842f6fa63b/Kane_Alex_whitecoat_191x288.png?MOD=AJPERES
    <![CDATA[&amp;CACHEID=4a2dffd8-bf49-47f0-8b9a-5e842f6fa63b]]>
  </wplc:field>
  <wplc:field id="gender">MALE</wplc:field>
  <wplc:field id="doc_source">default</wplc:field>
  <wplc:field id="degree">M.D.</wplc:field>
  <wplc:field id="defaultcontext">/poc</wplc:field>
  <wplc:field id="contentsourcetype">Seedlist</wplc:field>
  <wplc:field id="contentSourceType">Seedlist</wplc:field>       
  <wplc:field id="docid">Alex Kane</wplc:field>
  <wplc:field id="title">Alex Kane</wplc:field>
  <wplc:field id="language">English</wplc:field>
  <wplc:field id="doctortype">Plastic Surgery</wplc:field>
  <wplc:field id="condition">3D Surface Motion Capture</wplc:field>
  <wplc:field id="condition">3D Surface Scan</wplc:field>
  <wplc:field id="condition">Kinematic Motion Capture</wplc:field>       
  <wplc:field id="security_ids">Z6QReDeIPO2JIT62BDIJM8CKHDAJMG6P1P2MM8C3BEIJMK61BPAMPCCG1CIJP8623</wplc:field>
  <wplc:field id="type">Specialist</wplc:field>
  <wplc:field id="description">Plastic Surgery</wplc:field>
  <wplc:field id="contentPath">/Blog Solo Template v70/Blog/Home/95c189804d4268bf8d49ede9170f1e3d</wplc:field>
</atom:entry>

像上面一样,我的 xml 文件中有数百个 atom:entry 标签。 在这里,我需要做的是遍历每个原子条目标签并检查是否存在特定的子标签。比如检查是否有 wplc:field id="type" 存在与否。

如果特定节点不存在,则忽略剩余的原子条目父节点,并仅获取没有该特定子节点的父节点。

我应该如何做到这一点?

【问题讨论】:

  • 你能修改这个xml吗?您可以将 id 更改为其他属性吗?因为 ID 应该是唯一的。
  • 不,我不能修改它,因为它是来自客户端的原子提要。 :-(

标签: jquery xml


【解决方案1】:

您可以使用jquery解析xml,然后使用过滤器函数来获取其中没有元素类型为id的节点:

$('atom\\:entry').filter(function(){
 return $(this).find('#type').length == 0 ;
})

Working Demo

【讨论】:

  • 嗨 Milind,我应该在哪里看到输出?
  • @Vamshi:在演示中,我三次复制了atom:entry 元素。第一个和第三个元素中没有类型 ID。然后我在演示中变灰了。 jsfiddle.net/t92nwmw1
  • 是的,我可以在小提琴中看到它。但是我在哪里可以在浏览器中看到它?在控制台还是...?
  • @Vamshi:是的,您可以...右键单击并使用检查元素检查它们。
  • 你能给我一个截图,我在哪里可以看到输出?我无法在我的浏览器中看到它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多