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
|
|
|