我有一个加载一些XML的函数,如下所示:
private function onXMLLoad(e:Event):void
{
trace(e.target.data);
hideLoading();
DataModel.instance.data = XML(e.target.data);
updateSelections();
toggleExpand();
}
如果正在加载的XML数据格式不正确,例如未关闭打开的标记。我收到一个错误,告诉我XML必须格式正确。我真的没有计划加载格式不正确的XML,但如果它确实发生了,我宁愿能够处理它。首先是有一种方法可以判断加载的数据是否在将其转换为XML之前是否格式良好,并且如果可能的话尝试修复它?
答案 0 :(得分:3)
你可以在try / catch语句中包装强制转换:
try {
DataModel.instance.data = XML(e.target.data);
} catch (err:TypeError) {
//handle error
}
答案 1 :(得分:1)
AFAIK,没有官方的Flex / AS3库进行XML验证,我也不知道任何自定义的。
如果您可以在服务器端验证XML(假设它是适用的),那么这可能是您最好的选择,因为您将为大多数服务器端语言提供更多选项。
在将XML加载到XML类之前,您可以编写自己的类/函数来验证AS3中的XML。将数据变量作为String读入并解析,执行必要的操作以验证XML是否符合您的要求,包括匹配标记,并进行所需的更正。