2011-02-11 51 views
-1

尝试循环访问我的XML数据并将其分配给文本字段。没有得到一个具体的错误,但我很确定它与我引用数据的方式有关,并将其分配给.text框。我也有问题,得到我的XML的长度,所以我知道有多少次循环。请帮忙。谢谢!使用循环获取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> 

现在AS3应该循环并分配从XML值转换为文本字段:

//有问题但把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); 

//现在我要指派三个第一数据节点的值都是在洗手间PS当前行动态文本字段

     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; 

        } 

回答

2

给你。在节点上使用.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()); 
     } 
    } 
} 

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

+0

我看到我告诉循环来获取价值。谢谢!我现在会测试它。 – Denoteone 2011-02-11 21:48:08

1

使用:

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

,或者如果工作表是你只需要

myXML.Row.length(); 

根节点,但你也可以使用

myXML..Row.length(); 

,如果你不关心多远下来它是嵌套的XML。

0

首先在引用XML元素时跳过根节点。所以没有myXML.Worksheet.Row [i],而是使用myXML.Row [i]。其次(并记住前面的注释),您正在遍历行,所以您需要myXML.Row.length()而不是myXML.Worksheet.length()。