我正在尝试查找以下哪个“对象”节点包含 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=""
,它仍然有一些东西。
答案 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属性。否则,你忽略它。