【发布时间】:2017-05-18 19:00:04
【问题描述】:
我有一些看起来像这样的 XML:
<closure1>
<topClosure>
<ellipsoidalHead>
<standardComponentData>
<variousElements>
<idNumber>234567</idNumber>
<nominalThickness units="in">0.3750</nominalThickness>
</standardComponentData>
</ellipsoidalHead>
</topClosure>
</closure1>
<shell>
<standardComponentData>
<various_elements>
<nominalThickness units="in">0.6250</nominalThickness>
<idNumber>123456</idNumber>
</standardComponentData>
</shell>
<nozzle>
<standardComponentData>
<various_elements>
<attachedToidNumber>123456</attachedToidNumber>
</standardComponentData>
<nozzle>
在我的 JS 代码中,我已经将 <nozzle> 元素 bomNode 作为 jQuery 集,即
var bomNode = $("nozzle");
所以,对于每个喷嘴元素,我需要
在
<nozzle>元素中获取<attachedToidNumber>的值。找到包含匹配的
<idNumber>的元素<attachedToidNumber>(在这种情况下为<shell>)。- 获取
<nominalThickess>中的值 元素。
如您所见,所需<idNumber> 元素的深度可能会有所不同。这也是整个 XML 结构的一个非常小的子集,因此它可能非常大。
我尝试过这样的事情:
var attachedToElement = bomNode.parents().find('idNumber').text() === attachedToId;
但我得到了false 返回。获得所需 idNumber 值的最简单方法是什么?我确定这很简单,但我只是想念它。
谢谢。
更新: 我意识到bomNode 处于顶层,我不需要上去。一个等级。做这样的事情
var attachedToElement = bomNode.parents().siblings().find('idNumber')
给我一个包含<idNumber> 元素的子元素列表。因此,我需要找到具有所需价值的那个。我的想法是使用.each()。但是,该值是在 .each() 函数之外定义的,所以我没有任何可以匹配的东西。获得匹配列表后,获取具有我想要的 <idNumber> 值的集合的最简单方法是什么?
【问题讨论】:
标签: javascript jquery xml