[英]AS3 decoding XML file
我需要一些帮助来解码我的 XML 文件。 它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<design>
<images>
<cell id="fill" file="cellImages/cellFill"/>
<cell id="top" file="cellImages/cellTop"/>
<cell id="topLeft" file="cellImages/cellTopLeft"/>
<cell id="topRight" file="cellImages/cellTopRight"/>
<cell id="bottom" file="cellImages/cellBottom"/>
<cell id="bottomLeft" file="cellImages/cellBottomLeft"/>
<cell id="bottomRight" file="cellImages/cellBottomRIght"/>
</images>
</design>
这是我的代码:
function xmlLoaded(event:Event):void
{
_structXML = XML(_structLoader.data);
trace("Data loaded." + _structXML);
var a:XML;
for each( a in _structXML.images.cell)
{
trace("test=" + a);
}
}
它跟踪的只是 XML 和 7 个“测试=”没有从 XML 跟踪任何数据。
请帮忙 :)
它跟踪所有a
值的空字符串,因为它们是空的 XML 节点(没有内容,只有属性)。 使用a.@file
应该可以为您提供图像文件。
用这个:
trace("test id = " + a.attribute("id"));
trace("test file = " + a.attribute("file"));
您对"test=" + a
是将a
XML 对象转换为字符串,并按照XML toString()
的规则:
如果 XML 对象具有简单内容,则
toString()
返回 XML 对象的 String 内容,并去掉以下内容:开始标记、属性、命名空间声明和结束标记。如果 XML 对象具有复杂的内容,则
toString()
返回表示整个 XML 对象的 XML 编码字符串,包括开始标记、属性、命名空间声明和结束标记。
因为您的<cell>
节点具有“简单”的内容(没有子节点),所以它从输出中去除了 XML 开始和结束标记,并且因为<cell>
节点不包含任何内容,所以您会得到一个空字符串,它不会输出trace
语句中可见的任何内容。
您可以使用toXMLString()
获取 XML 的完整字符串表示(即上面列出的第二个行为,无论节点内容是“简单”还是“复杂”)。
trace("test=", a.toXMLString());
或者你可以输出属性:
trace(a.@id, "=", a.@file);
(注意: trace
可以接受多个参数,您不需要使用字符串连接+
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.