0

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

也许有人可以给我一两个提示?

4

2 回答 2

1

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

这个“ media:”是content媒体命名空间的一部分,它允许我们让两个同名的标签成为父标签的一部分,而不会与其他命名空间中的同名标签发生冲突。您可以看到它<item>同时具有 a<title>和 a<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: 前缀的标签(注意 :: 双冒号):

trace(myXML.channel.item[0].media::content.@url);

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

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

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

于 2013-05-09T15:29:10.580 回答
0

首先,您必须加载 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;
}

希望这可以帮助。

于 2013-05-09T06:40:31.103 回答