解析AS3 XML对象

时间:2009-11-12 13:31:06

标签: xml actionscript-3 e4x

我从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 个答案:

答案 0 :(得分:2)

你已经得到了它。应该能够像这样编写相同的循环:

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

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

答案 1 :(得分:1)

<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 :(得分:0)

您可以阅读我对AS3 - Deepest XML Elements的回答 通过使用SimpleXML,您可以以易于使用的方式解析XML。