【问题标题】:Loading XML with possible infinite tags使用可能的无限标签加载 XML
【发布时间】:2010-05-16 22:22:18
【问题描述】:

(我在AS3中这样做,但我确信答案可以在psuedocode中给出)

基本上,我有一个类似于以下内容的 XML 文件:

<Main>
 <Event>
  <Name>Blah</Name>
  <Event>
   <Name>Blah2</Name>
   <Event>
    <Name>Blah3</Name>
    ...
   </Event>
  </Event>
 </Event>
</Main>

是的,在某种程度上这是糟糕的设计。但我的想法是,任何事件都有可能损害其他事件,并且这个想法有点循环。

关于如何做到这一点的任何想法?

【问题讨论】:

  • 你能解释清楚一点吗?
  • 怎么是无限的?根据定义,xml 是有限的。它是磁盘上的一个文件。
  • 从某种意义上说,嵌套 标签的数量没有固定。这就是我所说的“无限”
  • “无限”嵌套元素没有错。例如,这就是你制作树的方式。
  • 怎么办怎么办?好的,您有一个嵌套了未知数量的事件标签的 XML 文件。好的,那你想用它们做什么?就像你想得到所有的名字?那么你可以使用 Main..Name 之类的东西

标签: xml actionscript-3 infinite-loop


【解决方案1】:

使用递归?

【讨论】:

  • 我得到了那个部分,但是如何......?像递归函数?
【解决方案2】:
var xml:XML = <Main>
                <Event>
                  <Name>Name1<Name>
                  <Event>
                     <Name>Name2</Name>
                     ...........
                  </Event>
                </Event>

              </Main>
var event:MyEvent = getEvent(xml);

function getEvent(xml:XML):MyEvent
{

    var event:MyEvent = new MyEvent();
     var xmlList:XMLList = xml.children();
     for(i = 0; i < xmlList.length(); i++){
     if(xml[i].hasOwnProperty("Name")){
       event.name = xml[i]["Name"];
      }
     if(xml[i].hasOwnProperty("Event")){
       event.event = getEventVO(xml[i]["Event"]);
      }

     }
    return event;

}

MyEvent.as

package
{

   public class MyEvent
   {

     public var name:String;
     public var event:Event;

     public function MyEvent():void
     {
     }
   }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多