XML 유형 변환

Flash Player 9 이상, Adobe AIR 1.0 이상

XML 객체 및 XMLList 객체를 문자열 값으로 변환할 수 있습니다. 마찬가지로 문자열을 XML 객체 및 XMLList 객체로 변환할 수도 있습니다. 또한 모든 XML 특성 값, 이름, 텍스트 값 등은 문자열이라는 사실을 기억하십시오. 다음 단원에서는 이러한 모든 XML 유형 변환 형식에 대해 설명합니다.

XML 및 XMLList 객체를 문자열로 변환

XML 및 XMLList 클래스에는 toString() 메서드와 toXMLString() 메서드가 포함되어 있습니다. toXMLString() 메서드는 XML 객체의 모든 태그, 특성, 네임스페이스 선언 및 내용이 포함된 문자열을 반환합니다. 복잡한 내용, 즉 자식 요소를 포함하는 XML 객체의 경우 toString() 메서드는 toXMLString() 메서드와 완전히 동일하고, 간단한 내용, 즉 텍스트 요소 하나만 포함하는 XML 객체의 경우 toString() 메서드는 다음 예제와 같이 해당 요소의 텍스트 내용만 반환합니다.

var myXML:XML =  
    <order> 
        <item id='1' quantity='2'> 
            <menuName>burger</menuName> 
            <price>3.95</price> 
        </item> 
    <order>; 
 
trace(myXML.item[0].menuName.toXMLString());  
    // <menuName>burger</menuName> 
trace(myXML.item[0].menuName.toString()); 
    // burger

이 코드와 같이 toString() 또는 toXMLString() 을 지정하지 않고 trace() 메서드를 사용하면 기본적으로 toString() 메서드를 사용하여 데이터가 변환됩니다.

var myXML:XML =  
    <order> 
        <item id='1' quantity='2'> 
            <menuName>burger</menuName> 
            <price>3.95</price> 
        </item> 
    <order>; 
 
trace(myXML.item[0].menuName);  
    // burger

trace() 메서드를 사용하여 코드를 디버깅하는 경우에는 trace() 메서드에서 좀 더 완전한 데이터를 출력하도록 toXMLString() 메서드를 사용할 수 있습니다.

문자열을 XML 객체로 변환

다음과 같이 new XML() 생성자를 사용하여 문자열에서 XML 객체를 만들 수 있습니다.

var x:XML = new XML("<a>test</a>");

유효하지 않거나 형식이 잘못된 XML을 나타내는 문자열을 XML로 변환하려고 하면 다음과 같이 런타임 오류가 발생합니다.

var x:XML = new XML("<a>test"); // throws an error

문자열 형식의 특성 값, 이름 및 텍스트 값 변환

모든 XML 특성 값, 이름 및 텍스트 값은 String 데이터 유형이며 이러한 값을 다른 데이터 유형으로 변환해야 할 수 있습니다. 예를 들어 다음 코드에서는 Number() 함수를 사용하여 텍스트 값을 숫자로 변환합니다.

var myXML:XML =  
                        <order> 
                            <item> 
                                <price>3.95</price> 
                            </item> 
                            <item> 
                                <price>1.00</price> 
                            </item> 
                        </order>; 
 
var total:XML = <total>0</total>; 
myXML.appendChild(total); 
 
for each (var item:XML in myXML.item) 
{ 
    myXML.total.children()[0] = Number(myXML.total.children()[0])  
                                                + Number(item.price.children()[0]); 
} 
trace(myXML.total); // 4.95;

이 코드에서 Number() 함수를 사용하지 않은 경우에는 + 연산자를 문자열 연결 연산자로 해석하므로 마지막 줄의 trace() 메서드에 의해 다음과 같이 출력됩니다.

01.003.95