在 as3 中访问单个 xml 子时遇到问题

Posted

技术标签:

【中文标题】在 as3 中访问单个 xml 子时遇到问题【英文标题】:Having trouble to access individual xml child in as3 【发布时间】:2015-07-19 22:21:43 【问题描述】:

这是我的问题。摄影数据从 XML 文件加载。当用户单击按钮时,该信息将被覆盖并替换为 XML 文件中所有用户的名称。我想要做的是当用户点击其中一个摄影按钮时,即。然后将仅在 XML 文件中显示人员的姓名,并在 XML 中的配置文件中显示风景。

解决此问题的最佳方法是什么?我是否应该尝试编写一个 if 语句来告诉我是否在 XML 配置文件中找到了孩子,然后如果答案是肯定的则返回名称?这就是我一直在努力但没有成功的事情。 任何反馈都会很棒。谢谢。

photographylist:其中包含删除重复项的数组 来自 XML

var photographylist:Array = [];
    xmlinfo.profile.photography.(photographylist.push(toString())); 



for (var i:int =0; i<totalimage; i++)

textvar.text = photographylist[i];    
background.addChild(textvar).addEventListener(MouseEvent.CLICK,loadnames);
            


               var list2:Array = new Array();
                xmlinfo.profile.first_name.(list2.push(toString())); 
                list2.sort();
                trace(list2 + " array 2 list");

这是一个 XML 示例

<profile>   

        <first_name>ann</first_name>
        <last_name> lee</last_name>
        <photography>sport</photography>
        <photography>landscape</photography>
        <photography>still life</photography>           
        <image>img1.jpg</image>
        <course>multimedia</course>
        <email>annlee@mycit.ie</email>
</profile>

【问题讨论】:

您找到解决方案了吗? 嗨 LDSMS。不,我无法让它工作。刚刚回来。我将其更改为原始代码,因此摄影列表是 XML 中所有 实例的数组,用于拼接出重复项。我的 XMLList 的语法有何变化,或者我仍然可以使用 EX4 过滤吗? 您只能在 XML 上使用 E4X。使用一个数组,您只需遍历它即可检查每个元素的所需值。 【参考方案1】:

使用 E4X 过滤,您可以获得照片节点中包含文本 landscape 的所有配置文件的列表。

var list:XMLList = xmlinfo.profile.(photography.children().contains("landscape"));

//trace out all the names of the matches
for(var i:int=0;i<list.length();i++)
    trace(list[i].first_name.text() + " " + list[i].last_name.text());


编辑

使用数组,您只需要遍历数组并检查所需的值。这是一个可以做到这一点的辅助函数:

var matchingItems:Array = getMatchingItems("landscape");

function getMatchingItems(str:String):Array 
    var results:Array = [];
    for each(var item:String in photographyList)
        if(item == str) results.push(item);
        //or, if you want to see if it contains the text (instead of an exact match)
        if(item.indexOf(str) > -1) results.push(item);

        //use toUpperCase() on both strings if you want non-case sensitive
    
    return results
 

【讨论】:

以上是关于在 as3 中访问单个 xml 子时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

As3 - 我需要在两个场景中加载 XML 文件吗?

复制 Xml as3 失败

(swf as3 XML URLLoader) 在 flex 中不起作用

将 AS3 保存为 XML 时丢失括号

无法访问 Flash as3 中的阶段

纯AS3创建Android manifest xml