2011-04-27 90 views
0

我得到了一个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> 

现在,我便走进一个数据提供程序是:

命名空间degro = “http://www.degro.org/td”; 使用namespace degro; //这是绑定命名空间

dg.dataProvider = new XMLListCollection(xml.variable.value.enum);

和DG DataGrid的数据域的值和水平

,但它不会显示当我运行该程序..

人经历过这个?

回答

0

您发布的XML未标识名称空间。我不是一个动作人物,但是在其他编程语言中,如果你没有指定正确的名称空间,串行器将无法生成输出。

你或许应该更新您的XML包含一个命名空间定义(即<xml xmlns="http://www.degro.org/td">或你应该建立你的供应商使用空/空命名空间。

+0

嗨,我以为是XML命名空间的标题.. soz itz那里,但我只是想知道如何正确地绑定它.. – helpdesk 2011-04-28 08:04:48

0

这是你应该如何在访问一个名称空间的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 
+0

我知道这一点,但仍然不会工作.. – helpdesk 2011-04-28 08:05:04

+0

它是否工作正常,当你从数据提供者XML删除命名空间? – user700284 2011-04-28 08:21:01

+0

是的,它完美的作品,当我删除命名空间..这就是为什么我知道命名空间是它的原因..并且我尝试了关键字使用命名空间degroNs,但现在它不工作。 – helpdesk 2011-04-28 08:32:42

1

这是从Adobe侧Using XML namespaces

有用的链接,你可能还需要阅读有关QName 一个对象表示合格的XML元素和属性的名称

希望帮助

0

这个工作对me.Check出来,让我知道如果这能帮助

<?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>