我有一个代码,用于读取xml数据。并且xml文件包含可选值,因此有些时候元素存在,有时则不存在。在这种情况下,我如何为动作脚本3.0中的默认值设置。
当我试图追踪该区域正在跳过的值时。那么有任何其他方法来追踪是元素是否存在或不是这样的?
修改
private function xmlListener(evt:Event) {
xmlValue = new XML(evt.target.data);
_videoURL = xmlValue.videoUrl;
_setWidth = xmlValue.setWidth;
_setHeight = xmlValue.setHeight;
}
假设XML中没有设置' setHeight '元素,那么 _setHeight 的值是什么?
编辑2:
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<videoUrl>videos.flv</videoUrl>
<setWidth>500</setWidth>
</settings>
答案 0 :(得分:1)
_setHeight = (xmlValue.setHeight.length() >0)?xmlValue.setHeight:0;
答案 1 :(得分:0)
尝试访问可能不存在的XML节点时,应尝试使用child()
类中的attribute()
,element()
和XML
函数。其中任何一个都返回XMLList
,如果指定的节点不存在,则XMLList
只是空的(length
为0)而不是Flash Player立即为Error
添加var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(@id == '123'));
1}}。
来自Flex Livedocs - Traversing XML structures :
如果您尝试过滤可能不存在的属性或元素,请参阅Flash® 播放器和Adobe®AIR™将抛出一个 例外。例如,最后一行 以下代码生成一个 错误,因为没有id 第二个p元素中的属性:
var doc:XML = <body> <p id='123'>Hello, <b>Bob</b>.</p> <p>Hello.</p> </body>; trace(doc.p.(b == 'Bob'));
同样,以下代码的最后一行会产生错误 因为没有b属性 第二个元素:
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'));
要避免这些错误,您可以识别具有该属性的属性 匹配属性或元素 使用attribute()和elements() 方法,如下面的代码所示:
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'));
您也可以使用hasOwnProperty()方法,如 以下代码:
{{1}}
答案 2 :(得分:-1)
if(xmlElement != null){
// do stuff here if it has a set value
}else{
// if it is empty then give it a value like this:
xmlElement = defultvalue;
}