代码之家  ›  专栏  ›  技术社区  ›  josef.van.niekerk

分析AS3 XML对象

  •  0
  • josef.van.niekerk  · 技术社区  · 15 年前

    我正在从ASP.NET中获取一个对象,当跟踪XML时,它如下所示:

    var xml:XML = new XML(event.message.body);
    trace(xml);
    

    我得到以下输出:

    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://localhost:49329/">
        <string>One</string>
        <string>Two</string>
        <string>Three</string>
    </ArrayOfString>
    

    我正在尝试迭代结构以提取字符串,但没有用。我使用以下代码:

    for each(var item:Object in xml.children())
    {
        MonsterDebugger.trace(this, item.toString());
    }
    

    …我知道这并不完全有效。它现在可以工作了,但是有一种方法可以使用@符号获得带有某些语法的字符串。

    有人能提出建议吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Amarghosh    15 年前
    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://localhost:49329/">
        <string>One</string>
        <string>Two</string>
        <string>Three</string>
    </ArrayOfString>
    

    您还必须注意名称空间:

    var ns:Namespace = new Namespace("http://localhost:49329/");
    var strings:XMLList = xml.ns::string;
    for each(var str:XML in strings)
      trace(str.text());
    
        2
  •  2
  •   rfunduk    15 年前

    你已经很明白了。应该可以这样编写相同的循环:

    for each( var el:XML in xml.string ) {
      trace( el.toString() );
    }
    

    看看这些 e4x docs ,这些都是针对flex的,但都适用,因为它只是as3。正如你所看到的,很多这些东西的文档状态有点不稳定:)

        3
  •  0
  •   Community CDub    7 年前

    你可以读我的答案 AS3 - Deepest XML Elements 通过使用simpleXML,您可以以一种易于使用的方式解析XML。