【问题标题】:Get value of node from XML using loop使用循环从 XML 中获取节点的值
【发布时间】:2011-02-11 21:36:12
【问题描述】:

尝试遍历我的 XML 数据并分配给文本字段。没有得到特定的错误,但我很确定它与我引用数据并将其分配给 .text 框的方式有关。我在获取 xml 的长度方面也有问题,所以我知道循环多少次。请帮忙。谢谢!

先总结一下我的 XML:

<Worksheet>
   <Row>
    <Data>Last Name</Data>
    <Data>First Name</Data>
    <Data>Ext.</Data>
   </Row>
   <Row>
    <Data>Smith</Data>
    <Data>Liz</Data>
    <Data>103</Data>
   </Row>
   <Row >
    <Data>Johns</Data>
    <Data>Jason</Data>
    <Data>116</Data>
   </Row>
   <Row>
    <Data>Potts</Data>
    <Data>Cheryl</Data>
    <Data>131</Data>
   </Row>
</Worksheet>

现在应该循环遍历并将 XML 中的值分配给文本字段的 AS3:

//在获取 myXML 的长度时遇到问题

                for (i = 0; i < myXML.Worksheet.length(); i++){

                trace(["in for loop" + i]);
                                 //Create new text_holder from linked MC
                var item:text_holder = new text_holder();
                 //add text holder to stage
                scroll_box.addChild(item);

//现在我想将循环当前行中前三个数据节点的值分配给动态文本字段

                        item.first_name.text = myXML.Worksheet.Row[i].Data[1];
                        item.last_name.text = myXML.Worksheet.Row[i].Data[0];
                        item.ext.text = myXML.Worksheet.Row[i].Data[2];
                            current_y_right = current_y_right  + 131;
                            item.x = current_x_right;
                            item.y = current_y_right;

                    }

【问题讨论】:

    标签: xml actionscript-3 flash-cs5


    【解决方案1】:

    给你。在节点上使用.text() 来获取它的值。

    var loader:URLLoader = new URLLoader(new URLRequest("test.xml"));
    loader.addEventListener(Event.COMPLETE, loaded, false, 0, true);
    
    function loaded(evt:Event):void
    {
        var xml:XML = new XML(evt.currentTarget.data);
        for(var i:int=0;i<xml.children().length();i++)
        {
            var _row = xml.children()[i];
            for(var j:int=0;j<_row.children().length();j++)
            {
                var _data = _row.children()[j];
                trace(_data.text());
            }
        }
    }
    

    如果需要(我推荐),将每个节点存储在数组或对象中以供外部参考。

    【讨论】:

    • 我看到我在告诉循环获取值。谢谢!我现在就测试一下。
    【解决方案2】:

    使用:

    for(var i : int = 0; i < myXML.Worksheet.Row.length(); i++){
    ... = myXML.Worksheet.Row[i].Data[0];
    }
    

    或者如果 Worksheet 是你只需要的根节点

    myXML.Row.length();
    

    但你也可以使用

    myXML..Row.length();
    

    如果您不在乎它在 xml 中嵌套多远。

    【讨论】:

      【解决方案3】:

      首先在引用 XML 元素时跳过根节点。所以没有 myXML.Worksheet.Row[i],而是使用 myXML.Row[i]。其次(请记住前面的评论),您正在迭代 Rows,因此您需要 myXML.Row.length() 而不是 myXML.Worksheet.length()。

      【讨论】:

        猜你喜欢
        • 2021-06-22
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多