Преобразование типа 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

При использовании метода trace() без указания методов toString() или toXMLString() преобразование данных по умолчанию происходит с помощью метода 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() с целью отладки кода часто требуется использовать метод toXMLString() , чтобы метод trace() выводил более полные данные.

Преобразование строк в объекты XML

Для создания объекта XML из строки можно использовать конструктор new XML() следующим образом:

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

При попытке преобразования строки в XML из строки, представляющей недопустимый или плохо сформированный XML, будет выведена ошибка времени выполнения, как показано ниже:

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

Преобразование значений, имен и текстовых значений атрибутов из строк

Все значения, имена и текстовые значения атрибутов являются типами строковых данных, и может возникнуть необходимость преобразовать их в другие типы данных. Например, в следующем коде функция 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