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 对象
可以使用 new XML() 构造函数从字符串创建 XML 对象,如下所示:
var x:XML = new XML("<a>test</a>");
如果试图将表示无效 XML 或格式有误的 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