使用XML提要中的内容在flex中填充数据网格

时间:2010-09-10 18:52:19

标签: xml flex datagrid mxml

我有一个datagrid:

    <mx:DataGrid id="resultsDataGrid" 
                 height="328" width="604" paddingRight="0" editable="false" y="43" horizontalCenter="0">
        <mx:columns>
            <mx:DataGridColumn headerText="Title" dataField="title"/>
            <mx:DataGridColumn headerText="Updated" dataField="updated"/>
        </mx:columns>
    </mx:DataGrid>

我还有一个REST服务,它返回一个xml文件,格式如下:

<feed xmlns="http://www.w3.org/2005/Atom">
<title></title>
<link href=""/>
<link rel="" href=""/>
<updated></updated>
<author>
    <name></name>
</author>
<id></id>
<entry>
<title></title>
<link href=""/>
<id></id>
<updated></updated>
<published></published>
<summary></summary>
<author>
    <name></name>
</author>
<category term="" label=""/>
<category term="" scheme=""/>
</entry>
</feed>

现在,所有这些字段都会在返回时填充,但为了让我更容易看到我删除了这些值。

我有一个HTTPService尝试填充它,使用以下结果函数:

        private function searched(event:ResultEvent):void
        {
            var result:XML = XML(event.result);
            //summaryText.text = result.toXMLString();
            //Alert.show(result.children().children().children().toString() + "hey");
            resultsDataGrid.dataProvider = result.entry;
        }

我只需要将Title和Updated字段实际加载到DataGrid中。 这显然不起作用,所以我来寻求帮助,如果有人有经验并且可以告诉我如何正确安排,我会很感激。 (我认为它与result.entry有关,它必须是像result.feed.entry一样的东西,但是我已经尝试了许多组合并且它们没有工作 - 除非我没有找到正确的。 )

1 个答案:

答案 0 :(得分:2)

奇怪的是,命名空间是造成问题的原因。为不包含它们的命名空间自动生成前缀。

最简单的解决方案:不要使用命名空间。

否则:您需要在此处进行一些研究:http://livedocs.adobe.com/flex/3/langref/Namespace.html

在下面的示例代码中,尝试单击按钮,您将看到发生了什么:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:XML id="atomNamespace">
        <feed xmlns="http://www.w3.org/2005/Atom">
            <title></title>
            <link href="" />
            <link rel="" href="" />
            <updated></updated>
            <author>
                <name></name>
            </author>
            <id></id>
            <entry>
                <title>Title text</title>
                <link href="" />
                <id></id>
                <updated>2010-09-10</updated>
                <published></published>
                <summary></summary>
                <author>
                    <name></name>
                </author>
                <category term="" label="" />
                <category term="" scheme="" />
            </entry>
        </feed>
    </mx:XML>
    <mx:XML id="noNamespace">
        <feed>
            <title></title>
            <link href="" />
            <link rel="" href="" />
            <updated></updated>
            <author>
                <name></name>
            </author>
            <id></id>
            <entry>
                <title>Title text</title>
                <link href="" />
                <id></id>
                <updated>2010-09-10</updated>
                <published></published>
                <summary></summary>
                <author>
                    <name></name>
                </author>
                <category term="" label="" />
                <category term="" scheme="" />
            </entry>
        </feed>
    </mx:XML>
    <mx:DataGrid id="resultList">
        <mx:columns>
            <mx:DataGridColumn headerText="Title" dataField="title" />
            <mx:DataGridColumn headerText="Updated" dataField="updated" />
        </mx:columns>
    </mx:DataGrid>
    <mx:Button label="Atom Namespace" click="resultList.dataProvider = atomNamespace..entry"/>
    <mx:Button label="No Namespace" click="resultList.dataProvider = noNamespace..entry"/>
</mx:Application>