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