使用具有混合命名空间的E4X获取第一个节点?

时间:2011-03-21 15:43:54

标签: javascript e4x

考虑一个带有少数名称空间的XML代码段:

<meal xmlns="urn:hl7-org:v3">
    <veg id="7" />
    <lunch id="123">
        <veg id="990" />
    </lunch>
    <dinner id="324">
         <veg id="111" />
    </dinner>
 </meal>

使用JavaScript E4X,如何明确选择第一个veg节点的id属性?

明确包含所有名称空间也很重要。这就是我..*::语法的原因。我意识到我在这里使用了错误的操作符。

我试过这个,不幸的是得到了所有veg节点id值:

var veg = meal..*::veg.@id.toString()
//currently gets 7990111

如何获取7的价值?

3 个答案:

答案 0 :(得分:1)

试试这个: var veg = meal..*::veg[position()=1].@id.toString()

veg[position()=1]告诉XPath你想要veg节点在第一个位置。 我刚刚完成你的初始xpath表达式。

答案 1 :(得分:1)

var veg = meal..*::veg[0].@id

答案 2 :(得分:1)

var meal = // xml;
var veg = meal..*::veg.@id[0];