首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在循环中从XMLList添加/删除

在循环中从XMLList添加/删除
EN

Stack Overflow用户
提问于 2009-10-28 09:27:15
回答 3查看 6.7K关注 0票数 2

我正在尝试解析通过HTTPService中的e4x检索到的一些XML。循环起作用了,对于列表中的每一集,它都会经过循环。然而,当它试图附加到一个XMLList时,我得到了下面的错误。

代码语言:javascript
复制
TypeError: Error #1009: Cannot access a property or method of a null object reference.

我正在尝试查询本地SQLite数据库,看看剧集是否存在(正在工作),如果存在,则附加到一个xmllist,如果不存在,则附加到另一个xmllist。

代码语言:javascript
复制
public static function seasonFavHandler(evt:ResultEvent):void {
    Application.application.ManagePage.selectedShow = 
        Application.application.ManagePage.gridFavourites.selectedItem as XML;
    episodeNumber = XML(evt.result).descendants("episode");
    var episode:Object = episodeNumber;
    for each(episode in episodeNumber) {
        currentEpisode = episode as XML;
        achkStatement = new SQLStatement();
        achkStatement.sqlConnection = dbconnection;
        achkStatement.text = "select :episodename from episodes where episodename = :episodename";
        achkStatement.parameters[":episodename"] = episode.title;
        achkStatement.addEventListener(SQLEvent.RESULT, episodeHandler);
        achkStatement.execute();
        trace(episode.title);
    }
   //Application.application.ManagePage.episodeList = episodeNumber;
   seasonHttpService.removeEventListener(ResultEvent.RESULT, seasonFavHandler);
   CursorManager.removeBusyCursor();
}

private static function episodeHandler(event:SQLEvent):void {
    var result:SQLResult = achkStatement.getResult();
    var episodeNewT:XMLList;
    var episodeWatchedT:XMLList;
    if (!result.data) {
        episodeNewT.appendChild(currentEpisode);
        //Application.application.ManagePage.gridUnwatched.addChild(currentEpisode);
    } else {
        episodeWatchedT.appendChild(currentEpisode);
        //Application.application.ManagePage.gridWatched.addChild(currentEpisode);
    }
    Application.application.ManagePage.episodeNew = episodeNewT;
    Application.application.ManagePage.episodeWatched = episodeWatchedT;
    achkStatement.removeEventListener(SQLEvent.RESULT, episodeHandler);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-28 09:35:03

您已经声明了episodeNewTepisodeWatchedT,但是还没有实例化它们。我还建议您使用XMLListCollection而不是XMLList,因为它在运行时更容易修改。

试试这个:

代码语言:javascript
复制
var episodeNewT:XMLListCollection = new XMLListCollection();
var episodeWatchedT:XMLListCollection = new XMLListCollection();

if (!result.data) {
    episodeNewT.addItem(currentEpisode);
} else {
    episodeWatchedT.addItem(currentEpisode);
}

Application.application.ManagePage.episodeNew = episodeNewT.copy();
Application.application.ManagePage.episodeWatched = episodeWatchedT.copy();

现在,您的变量将不为空,您可以将其追加到它们之后。注意,您将在最后使用copy()XMLListCollection转换回XMLList

票数 3
EN

Stack Overflow用户

发布于 2013-09-20 20:30:16

这是我对动态地将xml节点添加到xmllist中的解决方案。

代码语言:javascript
复制
private function addXmlChild(xmlList:XMLList, xmlNode:XML):void
{
    try
    {
        if(xmlList.children().length() != 0)
        {
            xmlList[xmlList.length() + 1] = xmlNode;
        }
        else
            xmlList[0] = xmlNode;               
        } 
        catch(error:Error) 
        {
            LogWriter.ErrorLog("addXmlChild, " + error.message);
        }
}
票数 1
EN

Stack Overflow用户

发布于 2010-10-25 01:01:04

但是如果你想使用XMLList,你可以尝试下一步:

代码语言:javascript
复制
var episodeNewT:XMLList;
var episodeWatchedT:XMLList;
if (!result.data) {
    episodeNewT= XMLList(currentEpisode);
    //Application.application.ManagePage.gridUnwatched.addChild(currentEpisode);
} else {
    episodeWatchedT = XMLList(currentEpisode);
    //Application.application.ManagePage.gridWatched.addChild(currentEpisode);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1634692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档