2013-07-17 34 views
0

我有一個看起來像這樣如何提取的「供」的屬性的值使用E4X和Flex/Flash的ActionScript中

<someRoot xmlns:ix="someURL.com"> 
    <ns:InventoryPage Title="something"> 
    <ns:Inventory Id="inventory"> 
     <ns:InventoryView ID="inventoryView"> 
     <Menu> 
      <ns:GridCreateActionLink Override="true" Visible="false" runat="server"/> 
     </Menu> 
     <Columns> 
      <ns:Column For="IncidentNo" LinkTo="default"/> 
      <ns:Column DisplayAs="string" For="Location"/> 
      <ns:Column For="DateaTimeOccur" Format="d"/> 
      <ns:Column For="Description"/> 
      <ns:Column For="Workflow.PersonResponsible" displayas="string"/> 
      <ns:Column For="Workflow.DueDate" Format="d"/> 
      <ns:Column For="DateClosed" Format="d"/> 
      <ns:Column DisplayAs="string" For="Workflow.Status"/> 
    </Columns> 
    </ns:InventoryView> 
</ns:Inventory> 

我的目標很簡單的XML文檔,我的編碼與Adobe Flex/AS3並且想要檢索列標籤中的所有FOR屬性值並將它們存儲在一個數組中。

假設上面的代碼是在一個名爲xmlObj XML對象,我做了以下

var xmlObj:XML = new XML(theXMLAbove); 

var someXMLList:XMLList = new XMLList(xmlObj); 

這是我抓我的頭。我嘗試使用e4x來檢索值。例如

trace (xmlObj.InventoryPage.Inventory.InventoryView.Columns.column[0].(@For)); 

或 跟蹤(xmlObj.column [0](@爲)。);

trace (someXMLList:XMLList .InventoryPage.Inventory.InventoryView.Columns.column[0].(@For)); 

或 跡(someXMLList:XMLList中.COLUMN [0](@爲));

我一直在獲取一個空的XMLList。或null。我是否全部錯了?希望在繼續進行一些幫助。謝謝 - Edward

+0

最瑣碎的事情是,這是區分大小寫的,根據您的XML文件列[0]必須是列[0] –

回答

0

使用命名空間時需要特別小心。

var xmlObj:XML = new XML(
    <ns:someRoot xmlns:ns="http://www.someURL.com/ns-someRoot"> 
     <ns:InventoryPage Title="something"> 
      <ns:Inventory Id="inventory"> 
       <ns:InventoryView ID="inventoryView"> 
        <Menu> 
         <ns:GridCreateActionLink Override="true" Visible="false" runat="server"/> 
        </Menu> 
        <Columns> 
         <ns:Column For="IncidentNo" LinkTo="default"/> 
         <ns:Column DisplayAs="string" For="Location"/> 
         <ns:Column For="DateaTimeOccur" Format="d"/> 
         <ns:Column For="Description"/> 
         <ns:Column For="Workflow.PersonResponsible" displayas="string"/> 
         <ns:Column For="Workflow.DueDate" Format="d"/> 
         <ns:Column For="DateClosed" Format="d"/> 
         <ns:Column DisplayAs="string" For="Workflow.Status"/> 
        </Columns> 
       </ns:InventoryView> 
      </ns:Inventory> 
     </ns:InventoryPage> 
    </ns:someRoot> 
); 


var theNameSpace:Namespace = xmlObj.namespace(); 
var columns:XMLList = xmlObj.theNameSpace::InventoryPage.theNameSpace::Inventory.theNameSpace::InventoryView.Columns.theNameSpace::Column; 

trace([email protected]()) 
var somelist:XMLList = [email protected] 
var arr:Array = [] 
for each(var someFor:String in somelist){ 
    arr.push(someFor) 
} 
trace(arr) 
相關問題