[英]how to extract the values of the “For” attribute using E4X and Flex / Flash ActionScript
I have an XML document that looks like this 我有一个看起来像这样的XML文档
<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>
My objective is simple, I am coding with Adobe Flex / AS3 and want to retrieve all the values of the FOR attributes in the column tags and store them in an array. 我的目标很简单,我正在使用Adobe Flex / AS3进行编码,并希望检索列标记中FOR属性的所有值并将它们存储在数组中。
Assuming the code above is in an XML object called xmlObj, I did the following 假设上面的代码在一个名为xmlObj的XML对象中,则执行以下操作
var xmlObj:XML = new XML(theXMLAbove);
var someXMLList:XMLList = new XMLList(xmlObj);
This is where I was scratching my head. 这是我挠头的地方。 I tried using e4x to retrieve the values.
我尝试使用e4x检索值。 For example
例如
trace (xmlObj.InventoryPage.Inventory.InventoryView.Columns.column[0].(@For));
or trace (xmlObj.column[0].(@For)); 或跟踪(xmlObj.column [0]。(@ For));
trace (someXMLList:XMLList .InventoryPage.Inventory.InventoryView.Columns.column[0].(@For));
or trace (someXMLList:XMLList .column[0].(@For)); 或跟踪(someXMLList:XMLList .column [0]。(@ For));或
I keep on getting an empty XMLList. 我继续得到一个空的XMLList。 or null.
或为null。 Am I going about this all wrong?
我要解决所有这些错误吗? Would appreciate some help in proceeding.
希望能对您有所帮助。 thanks - Edward
谢谢-爱德华
You need to be extra careful when using namespaces. 使用名称空间时,需要格外小心。
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(columns.@For.length() )
var somelist:XMLList = columns.@For
var arr:Array = []
for each( var someFor:String in somelist){
arr.push(someFor)
}
trace(arr)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.