我有一个看起来像这样的多级节点结构
<node>
<node>
<node id="a1"></node>
<node id="a2"></node>
</node>
<node>
<node id="b1"></node>
<node id="b2"></node>
</node>
<node>
我想搜索与id匹配的第一个节点。
我通常使用这种语法:
xmldata.*.(@id == "a2")[0]
但看起来它不适用于多个嵌套级别。有没有办法找到节点而不循环并存档内容?
答案 0 :(得分:2)
使用descendants()
或E4X运算符..
。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XML.html#descendants%28%29
var test:XML =
<node>
<node id="b1"></node>
<node id="b2"></node>
<smth>
<node id="b3">
<smth>
<node id="b4"></node>
</smth>
</node>
</smth>
</node>;
var search:XMLList;
search = test.descendants("node").(attribute("id") == "b4");
trace(search.toXMLString());
// OR
search = test..node.(@id == "b4");
trace(search.toXMLString());
注意:请谨慎使用@id
表示法。如果任何节点不包含'id'属性,它将为您提供引用错误异常。
答案 1 :(得分:0)
虽然我不完全了解您的情况,但您是否尝试使用XPath implementation?