XML AS3选择图像URL命名空间值



基本上,对于一个项目,我正在使用deviantart上的漫画提供的XML在flash中制作漫画阅读器。我只是到目前为止试图找出如何提取一个项目对象内的图像的url,我想我主要是在学习如何语法应该是挣扎。我试过:var imgUrl:String = comicXML.children().content.@url;与comicXML是url请求。单独跟踪comicXML可以正常工作并返回XML。

也许有人能给我一点提示?

这是一个棘手的问题,部分原因是挂起与其说是基本的XML处理,不如说是处理名称空间。你会注意到在<item>中,有一个标签<media:content url="blahblahblah" />

"media:"使content成为媒体名称空间的一部分,并且它允许我们有两个具有相同名称的标记作为父标记的一部分,而不会与其他名称空间中的相同名称的标记相冲突。您可以看到<item>同时具有<title><media:title>,并且没有抱怨。

您还会注意到,在根标记中,有几个用xmlns定义的名称空间(media、atom和creativeCommons):

<rss xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
     version="2.0">
要使用它们,您需要创建一个命名空间变量:
var myXML:XML = new XML( loader.data );
var media:Namespace = myXML.namespace("media");
现在我们已经创建了代表xmlns:media的media,我们可以使用如下代码访问任何带有media:前缀的标记(注意::双冒号):
trace(myXML.channel.item[0].media::content.@url);

我发现这些链接很有帮助(尤其是第二个!):

http://lab.revoke.ca/2009/05/as3-xml-namespace/

http://coursesweb.net/actionscript/xml-e4x-namespaces

首先必须加载url请求,然后将数据转换为xml

var myLoad:URLLoader = new URLLoader();
myLoad.load(new URLRequest("art.xml"));
myLoad.addEventListener(Event.COMPLETE, getXML);
var myXML:XML;
function getXML(e:Event):void {
  myXML = new XML(e.target.data);
}

然后从那里使用XMLList来检索所需的信息:

xml示例:

<pictures>
<item>
   <file>filename.jpg</file>
</item>
<item>
   <file>filename2.jpg</file>
</item>
</pictures>
那么使用XMLList的方法如下:

var xl:XMLList = myXML.item;
var i:int = 0;
for each (var labelElement:XML in xl) 
{
   trace(labelElement.data.text()[i]);
   ++i;
}

最新更新