E4X를 사용하여 XML 처리

ECMAScript for XML 사양은 XML 데이터 작업을 위한 클래스 및 기능 집합을 정의합니다. 이러한 클래스와 기능을 하나로 묶어 E4X라고 합니다. ActionScript 3.0에는 XML, XMLList, QName 및 Namespace와 같은 E4X 클래스가 포함되어 있습니다.

E4X 클래스의 메서드, 속성 및 연산자는 다음을 구현할 수 있도록 디자인되었습니다.

중요

 

ActionScript 2.0에는 XML 클래스가 있습니다. ActionScript 3.0에서는 이 클래스가 E4X에 포함된 ActionScript 3.0 XML 클래스와 충돌하지 않도록 XMLDocument로 이름이 바뀌었습니다. ActionScript 3.0에서는 이전 클래스, 즉 XMLDocument, XMLNode, XMLParser 및 XMLTag가 이전 버전을 지원하기 위해 flash.xml 패키지에 포함되어 있습니다. 새로 추가된 E4X 클래스는 기본 클래스이므로 사용할 때 패키지를 가져올 필요가 없습니다. 이 장에서는 이전 ActionScript 2.0 XML 클래스에 대해 자세히 설명하지 않습니다. 이러한 클래스에 대한 자세한 내용은 ActionScript 3.0 언어 및 구성 요소 참조 설명서flash.xml 패키지를 참조하십시오.

다음은 E4X를 사용하여 데이터를 조작하는 예제입니다.

var myXML:XML = 
    <order>
        <item id='1'>
            <menuName>burger</menuName>
            <price>3.95</price>
        </item>
        <item id='2'>
            <menuName>fries</menuName>
            <price>1.45</price>
        </item>
    </order>

대개 응용 프로그램에서는 웹 서비스 또는 RSS 피드와 같은 외부 소스에서 XML 데이터를 로드합니다. 그러나 이 장의 예제에서는 사용자가 쉽게 이해할 수 있도록 XML 데이터를 리터럴로 지정합니다.

다음 코드와 같이 E4X에는 도트(.) 및 특성 식별자(@) 연산자처럼 XML에서 속성과 특성에 액세스하는 데 사용할 수 있도록 직관적인 연산자가 포함되어 있습니다.

trace(myXML.item[0].menuName); // 출력: burger
trace(myXML.item.(@id==2).menuName); // 출력: fries
trace(myXML.item.(menuName=="burger").price); // 출력: 3.95

다음 코드 예제와 같이 appendChild() 메서드를 사용하면 새 자식 노드를 XML에 지정할 수 있습니다.

var newItem:XML = 
    <item id="3">
        <menuName>medium cola</menuName>
        <price>1.25</price>
    </item>

myXML.appendChild(newItem);

다음과 같이 @. 연산자를 사용하면 데이터를 읽을 수 있을 뿐만 아니라 지정할 수도 있습니다.

myXML.item[0].menuName="regular burger";
myXML.item[1].menuName="small fries";
myXML.item[2].menuName="medium cola";

myXML.item.(menuName=="regular burger").@quantity = "2";
myXML.item.(menuName=="small fries").@quantity = "2";
myXML.item.(menuName=="medium cola").@quantity = "2";

다음과 같이 for 루프를 사용하면 XML의 노드를 반복할 수 있습니다.

var total:Number = 0;
for each (var property:XML in myXML.item)
{
    var q:int = Number(property.@quantity);
    var p:Number = Number(property.price);
    var itemTotal:Number = q * p;
    total += itemTotal;
    trace(q + " " + property.menuName + " $" + itemTotal.toFixed(2))
}
trace("Total: $", total.toFixed(2));

Flash CS3

 

이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서

현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/main/00000124.html