确定as3中的xml节点属性是否为空

时间:2013-04-12 17:12:28

标签: xml actionscript-3 flash

我正在尝试查找以下哪个“对象”节点包含 linkurl 属性中的网址。即使属性中没有内容,linkurl属性也将始终存在。我没有运气,因为我可以找到一种方法来确定第一个对象节点中第一个linkurl实例是否为空,然后继续前进到第二个然后是第三个等等。该属性总是包含一些内容,即使属性本身没有内容。

这是xml

<object id='graphic1' active='1' url='media/00360691.swf' x='445' y='125' alt='' altfr='' altes='' tabIndex='1' layer='0' linkurl=''/>
<object id='graphic2' active='0' url='media/00360691.swf' x='0' y='0' alt='' altfr='' altes='' tabIndex='1' layer='0' linkurl='html/AnalyticalReviewAnalysis.pdf'/>
<object id='graphic3' active='0' url='media/00360692.swf' x='0' y='0' alt='' altfr='' altes='' tabIndex='1' layer='0' linkurl=''/>
<object id='graphic4' active='0' url='media/00360693.swf' x='0' y='0' alt='' altfr='' altes='' tabIndex='1' layer='0' linkurl=''/>
<object id='graphic5' active='0' url='media/' x='0' y='0' alt='' altfr='' altes='' tabIndex='1' layer='0' linkurl=''/>
<object id='activity' active='0' url='media/' x='0' y='0'/>

这是我到目前为止所尝试的:

if(myXML.object[7].hasOwnProperty("@linkurl")){
        trace("graphic 1 is not empty");
        linkURL = myXML.object[7].attribute("linkurl")[0];
} else {
        trace("graphic 1 is empty");
}

    trace("length: "+myXML.object[7].attribute("linkurl")[0].length());
    trace(myXML.object[7].attribute("linkurl")[0]);

    trace("linkURL: "+ linkURL);

这就是追踪:

graphic 1 is not empty
length: 1

linkURL: 

无论属性是否包含内容,长度始终为1。因此,我无法忽视空节点,继续前进到下一个节点。 if语句总是不是空的,因为即使linkurl="",它仍然有一些东西。

2 个答案:

答案 0 :(得分:1)

长度为1是正确的 - 您的xml对象中有1个linkurl属性。

具有空字符串作为其值的属性仍然是属性

要获得零长度,xml不应包含 linkurl =''

答案 1 :(得分:1)

试试这个:

if ( myXML.object[7].@linkurl && myXML.object[7].@linkurl != '' ) {
    // linkurl contains data
}
else {
    // linkurl is empty
}

基本上你验证linkurl属性实际存在(这只是避免空引用的一个好习惯)并查看字符串是不是空字符串。如果是这样,您可以设置AS3 linkurl属性。否则,你忽略它。