0

我正在尝试查找以下哪个“对象”节点在linkurl属性中包含一个 url。即使属性中没有内容,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 语句总是出现不为空,因为即使 if linkurl="",它仍然有一些东西。

4

2 回答 2

1

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

以空字符串为值的属性仍然是属性

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

于 2013-04-12T17:21:29.263 回答
1

尝试这个:

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

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

于 2013-04-12T17:27:10.997 回答