AS3中解析XML直接使用XML类自动解析,无需手动调用parse方法;支持字符串字面量创建和URLLoader加载后解析,结合E4X语法(如xml.item、xml.item.@id)便捷访问,并需注意UTF-8编码与TypeError异常处理。

在 ActionScript 3 中解析 XML 数据非常直接,核心是使用内置的 XML 类(注意不是 XMLDocument,那是 AS2 的)。只要数据格式合法,AS3 会自动完成解析,无需手动调用“parse”方法。
直接赋值即可解析
AS3 的 XML 构造器会自动解析字符串。只要 XML 格式正确(有且仅有一个根节点、标签闭合、编码匹配),写法很简单:
- 用字符串字面量创建(推荐用于静态或调试):
- 从外部加载后解析(常见于加载 config.xml 或服务返回):
loader.addEventListener(Event.COMPLETE, onXMLLoaded);
loader.load(new URLRequest("data.xml"));
function onXMLLoaded(e:Event):void {
var xml:XML = new XML(e.target.data); // 自动解析
// 后续处理…
}
常用访问方式:点号 + E4X 语法
AS3 支持 E4X(ECMAScript for XML),让 XML 操作像访问对象属性一样自然:
-
xml.item — 获取所有名为
item的子元素(返回 XMLList) - xml.item[0] — 获取第一个 item 元素(XML 实例)
-
xml.item.@id — 获取所有 item 的
id属性(XMLList) - xml.item.(@id == "1") — 使用属性过滤(返回匹配的 XMLList)
- xml.item.text() — 获取文本内容(如 "Apple")
注意编码与错误处理
如果 XML 包含中文等非 ASCII 字符,确保文件保存为 UTF-8(无 BOM 更稳妥),并在加载时指定编码(可选):
若 XML 格式错误(如标签不闭合、缺少根节点),构造 XML 时会抛出 TypeError。建议加 try-catch:
try {var xml:XML = new XML(data);
} catch (e:TypeError) {
trace("XML 解析失败:", e.message);
}
遍历与提取数据示例
假设 XML 是:<products><product name="Laptop" price="999"/><product name="Mouse" price="25"/></products>
for each (var p:XML in xml.product) {trace("名称:" + p.@name + ",价格:" + p.@price);
}
基本上就这些。AS3 的 XML 解析轻量、直观,关键在于写对 E4X 表达式,再留意下编码和异常即可。










