如何避免由于Flash动作脚本中XML文件缺少元素而导致的错误
我有一个用于读取xml数据的代码。xml文件包含可选值,因此有时元素存在,有时不存在。在这种情况下,如何在ActionScript3.0中为其设置默认值 当我试图跟踪该区域正在跳过的值时。那么,有没有其他方法来追踪元素是否存在 编辑:如何避免由于Flash动作脚本中XML文件缺少元素而导致的错误,xml,apache-flex,flash,actionscript-3,actionscript,Xml,Apache Flex,Flash,Actionscript 3,Actionscript,我有一个用于读取xml数据的代码。xml文件包含可选值,因此有时元素存在,有时不存在。在这种情况下,如何在ActionScript3.0中为其设置默认值 当我试图跟踪该区域正在跳过的值时。那么,有没有其他方法来追踪元素是否存在 编辑: private function xmlListener(evt:Event) { xmlValue = new XML(evt.target.data); _videoURL = xmlValue.videoUrl; _setWidth
private function xmlListener(evt:Event) {
xmlValue = new XML(evt.target.data);
_videoURL = xmlValue.videoUrl;
_setWidth = xmlValue.setWidth;
_setHeight = xmlValue.setHeight;
}
假设集合“setHeight”元素不在XML中,那么\u setHeight的值是多少
编辑2:
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<videoUrl>videos.flv</videoUrl>
<setWidth>500</setWidth>
</settings>
视频.flv
500
尝试访问可能不存在的XML节点时,应尝试使用XML
类中的child()
、attribute()
和element()
函数。其中任何一个都返回一个XMLList
,如果指定的节点不存在,XMLList
只是空的(长度为0),而不是Flash播放器立即发出错误
发件人:
如果您试图筛选可能不存在的属性或元素,则Flash®
播放器和Adobe®AIR™ 将抛出一个
例外例如,最后一行
以下代码的一部分生成一个
错误,因为没有id
第二个p元素中的属性:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(@id == '123'));
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
var-doc:XML=
你好,鲍勃
你好
;
跟踪(doc.p.(@id='123'));
类似地,下面代码的最后一行生成错误
因为这个函数没有b属性
第二个p元素:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(@id == '123'));
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
var-doc:XML=
你好,鲍勃
你好
;
跟踪(doc.p.(b='Bob');
为了避免这些错误,您可以标识具有
通过以下方式匹配属性或元素:
使用属性()和元素()
方法,如以下代码所示:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(attribute('id') == '123'));
trace(doc.p.(elements('b') == 'Bob'));
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(hasOwnProperty('@id') && @id == '123'));
trace(doc.p.(hasOwnProperty('b') && b == 'Bob'));
var-doc:XML=
你好,鲍勃
你好
;
跟踪(doc.p.(属性('id')='123');
跟踪(doc.p.(元素('b')='Bob'));
您还可以使用hasOwnProperty()方法,如
以下代码:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(attribute('id') == '123'));
trace(doc.p.(elements('b') == 'Bob'));
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(hasOwnProperty('@id') && @id == '123'));
trace(doc.p.(hasOwnProperty('b') && b == 'Bob'));
var-doc:XML=
你好,鲍勃
你好
;
跟踪(doc.p.(hasOwnProperty('id')&&id='123');
跟踪(doc.p.(hasOwnProperty('b')&b='Bob');
您是如何处理XML的?E4X?举个XMLThank的例子怎么样?我问了一个问题后意识到我其实并不需要它:-)哦,太多总比太少好。我认为空的东西不起作用,我认为你需要检查未定义的。或者你可以做我在回答中所做的。未定义和null不起作用,你可以通过编写自己的代码进行检查,如果我失败了,这就是为什么出现以下情况:(