2011-04-27 91 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>