在as3中找到多级xml中的匹配节点

时间:2011-07-04 01:02:15

标签: xml actionscript-3

我有一个看起来像这样的多级节点结构

<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]

但看起来它不适用于多个嵌套级别。有没有办法找到节点而不循环并存档内容?

2 个答案:

答案 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