使用命名空间XML

| 我有一个xml结构:
<xml>
    <variable>
         <values>
               <enum>
                 <value>2</value>
                 <level>high</level>
               </enum>
               <enum>
                  <value>1</value>
                  <level>medium</level>
               </enum>
               <enum>
                  <value>0</value>
                  <level>low</level>
               </enum>
          </values>
      </variable>
</xml>
现在,我将此传递到dataProvider中: 名称空间degro = \“ http://www.degro.org/td \”; 使用命名空间degro; //这是绑定命名空间 dg.dataProvider =新的XMLListCollection(xml.variable.value.enum); dg datagrid的dataFields是value和level 但是当我运行程序时它不会显示.. 有人曾经历过吗?     
已邀请:
这是来自Adobe Side Using XML名称空间的有用链接 您可能还需要阅读有关QName的信息  对象代表XML元素和属性的合格名称 希望能有所帮助     
您发布的XML不能标识名称空间。我不是一个动作脚本人,但是在其他编程语言中,如果您未指定正确的名称空间,则序列化程序将无法生成输出。 您可能应该更新XML以包括名称空间定义(即
<xml xmlns=\"http://www.degro.org/td\"
>),或者应该将提供程序设置为使用空白/空名称空间。     
这是您应该如何在flex中访问命名空间的XML
private var degroNS:NameSpace = new NameSpace(\"http://www.degro.org/td\");
//
//
//
dg.dataProvider = new XMLListCollection(xml.degroNS::variable.degroNS::value.degroNS::enum);//Assuming xml is the variable name for the xml
    
这对我有用。请检查一下,让我知道是否有帮助
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:Application xmlns:fx=\"http://ns.adobe.com/mxml/2009\" 
               xmlns:s=\"library://ns.adobe.com/flex/spark\" 
               xmlns:mx=\"library://ns.adobe.com/flex/mx\" minWidth=\"955\" minHeight=\"600\"
               creationComplete=\"application1_creationCompleteHandler(event)\">
    <s:layout>
        <s:VerticalLayout/>
    </s:layout>
    <fx:Script>
        <![CDATA[

            import mx.collections.XMLListCollection;
            import mx.events.FlexEvent;

            private var ns:Namespace = new Namespace(\"http://www.degro.org/td\");

            protected function application1_creationCompleteHandler(event:FlexEvent):void
            {
                dg.dataProvider = new XMLListCollection(dataXML.ns::variable.ns::values.ns::enum);
            }

            private function valueLabelFunction(item:Object,column:DataGridColumn):String
            {
                return item.ns::value+\'\';
            }

            private function levelLabelFunction(item:Object,column:DataGridColumn):String
            {
                return item.ns::level+\'\';
            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <fx:XML id=\"dataXML\">
            <xml xmlns=\"http://www.degro.org/td\">
                <variable>
                    <values>
                        <enum>
                            <value>2</value>
                            <level>high</level>
                        </enum>
                        <enum>
                            <value>1</value>
                            <level>medium</level>
                        </enum>
                        <enum>
                            <value>0</value>
                            <level>low</level>
                        </enum>
                    </values>
                </variable>
            </xml>
        </fx:XML>
    </fx:Declarations>
    <mx:DataGrid id=\"dg\">
        <mx:columns>
            <mx:DataGridColumn headerText=\"Value\" labelFunction=\"valueLabelFunction\"/>
            <mx:DataGridColumn headerText=\"Level\" labelFunction=\"levelLabelFunction\"/>
        </mx:columns>
    </mx:DataGrid>
</s:Application>
    

要回复问题请先登录注册