2011-02-11 5 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); 

는 지금은 LOO의 처음 세 데이터 노드의 값을 할당 할 // DYNAMIC TEXT TO 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

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.Worksheet.length() 대신 myXML.Row.length()가 필요합니다.

관련 문제