2009-12-04 3 views
3

e4X를 사용하여 XML 파일을 쉽게 파싱하지 못했습니다. 'version'태그에서 정보를 얻을 수는 있지만 중첩 된 태그는 사용할 수 없습니다.e4X & Flex 3을 사용하여 XML을 파싱 할 때 문제가 발생했습니다.

누군가 내가 잘못하고있는 것을 지적 할 수 있습니까? 여기

<NameOfRoot xmlns="http://www.theaddress.com/file"> 
    <version>1.0</version> 
    <NameOfChild1> 
     <NameOfChild2> 
      <GeneralData> 
       <Identifier>2678</Identifier> 
      </GeneralData> 
     </NameOfChild2> 
    </NameOfChild1> 
</NameOfRoot> 

코드입니다 : 여기

은 XML입니다

<mx:HTTPService id="MyService" url="data.xml" result="resultHandler(event)" resultFormat="e4x"/> 

private function resultHandler(event:ResultEvent):void { 

    XMLData = event.result as XML; 

    var ver:String = XMLData.*::version; // ver = 1.0 
    var id:String = XMLData.*::NameOfChild1.NameofChild2.GeneralData.Identifier; //empty string 
} 

답변

11

각 수준 평가해야 할 수 있도록 각 요소가 기본 네임 스페이스에 네임 스페이스된다

var id:String = XMLData.*::NameOfChild1.*::NameOfChild2.*::GeneralData.*::Identifier; 
// or 
var n:Namespace = XMLData.namespace(); 
var id:String = XMLData.n::NameOfChild.n::NameOfChild2.n::GeneralData.n::Identifier; 

"default xml namespace"지시문을 사용하여 기본 네임 스페이스를 설정할 수 있습니다.

default xml namespace = new Namespace("http://www.theaddress.com/file"); 
var id:String = xml.NameOfChild1.NameOfChild2.GeneralData.Identifier; 
+0

예 : 아이디가 예약어 인 경우 어떻게됩니까? const? – Strudel

+0

더 긴 형식을 사용할 수 있습니다 : parent.child ("const"). actionscript XML 객체의 설명서를 참조하십시오. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XML.html?filter_flex=4.1&filter_flashplayer=10.1&filter_air=2 –

관련 문제