基本上,对于一个项目,我正在使用由deviantart 上的漫画提供的 XML 制作一个 Flash 漫画阅读器。到目前为止,我只是想弄清楚如何在项目对象中提取图像的 url,我想我主要是在努力学习语法应该是怎样的。我试过了:var imgUrl:String = comicXML.children().content.@url;
以comicXML 作为url 请求。单独跟踪comicXML 确实可以正常工作并返回XML。
也许有人可以给我一两个提示?
基本上,对于一个项目,我正在使用由deviantart 上的漫画提供的 XML 制作一个 Flash 漫画阅读器。到目前为止,我只是想弄清楚如何在项目对象中提取图像的 url,我想我主要是在努力学习语法应该是怎样的。我试过了:var imgUrl:String = comicXML.children().content.@url;
以comicXML 作为url 请求。单独跟踪comicXML 确实可以正常工作并返回XML。
也许有人可以给我一两个提示?
这是一个棘手的问题,部分原因是挂断与其说是基本的 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);
我发现这些链接很有帮助(尤其是第二个!):
首先,您必须加载 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;
}
希望这可以帮助。