2013-06-26 53 views
0

是否可以檢查所有XML節點父項是否存在於某種循環中?比方說,我的線沿線的一個參考:檢查循環AS3中的XML父項

myXML.sectionOne.subSectionOne.subsubSectionFive.subsubsubSectionTwo.name 

什麼我發現是,不僅可能會在name節點不存在的,但任何數量的父節點的可能不存在的。所以我一直在堅持做的是沿着線的東西:

if(myXML.sectionOne != undefined) 
{ 
    if(myXML.sectionOne.subSectionOne != undefined) 
    { 
     if(myXML.sectionOne.subSectionOne.subsubSectionFive != undefined) 
     { 
      if(myXML.sectionOne.subSectionOne.subsubSectionFive.subsubsubSectionTwo != undefined) 
      { 
       if(myXML.sectionOne.subSectionOne.subsubSectionFive.subsubsubSectionTwo.name != undefined) 
       { 

       } 
      } 
     } 
    } 
} 
+0

你這裏有什麼是設計不好的XML結構 –

+0

我同意,不幸的是,我不是那個產生它的人。 – user2440987

回答

0

你可以寫一個遞歸函數來檢查每個節點的localName()

var xml:XML = <root> 
<sectionOne> 
    <subSectionOne> 
     <subsubSectionFive> 
      <subsubsubSectionTwo> 
       <name>bam!</name> 
      </subsubsubSectionTwo> 
     </subsubSectionFive> 
    </subSectionOne> 
</sectionOne> 
</root>; 

trace(hasNodeByName(xml,"name")); 

function hasNodeByName(xml:XML,nodeName:String):Boolean{ 
    if(xml.localName() == nodeName) return true;//check root 
    for each(var node:XML in xml.*){//check each node on 1st level 
     if(node.localName() == nodeName) return true; 
     else if(node.length() > 0) return hasNodeByName(node,nodeName);//we need to go deeper! 
    } 
    return false; 
} 
+0

我稍微修改了這個,但我認爲它會工作,謝謝。 – user2440987