2011-09-08 70 views
0

我想创建一个图片库:我如何通过属性访问儿童节点?

<card> 
<product catalog="Thread Works"> 
    <name>AK E001</name>  
    <price>45</price> 
    <path>assets\cards\AK_E001.jpg</path> 
</product> 

<product catalog="Paper Work"> 
    <name>AK E001</name> 
    <price>45</price> 
    <path>assets\cards\AK_PP003.jpg</path> 
</product> 

<product catalog="Thread Works"> 
    <name>AK E002</name>  
    <price>50</price> 
    <path>assets\cards\AK_E002.jpg</path> 
</product> 

我可以访问属性,但如果我选择“主题作品”我只希望有孩子的节点访问 <product catalog="Thread Works">,为的AddItem数组收集任何帮助感谢

回答

0
<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 
      private var mainXML:XML = <card> 
             <product catalog="Thread Works"> 
              <name>AK E001</name>  
              <price>45</price> 
              <path>assets\cards\AK_E001.jpg</path> 
             </product> 

             <product catalog="Paper Work"> 
              <name>AK E001</name> 
              <price>45</price> 
              <path>assets\cards\AK_PP003.jpg</path> 
             </product> 

             <product catalog="Thread Works"> 
              <name>AK E002</name>  
              <price>50</price> 
              <path>assets\cards\AK_E002.jpg</path> 
             </product> 
             </card>; 

      protected function fetchHandler(event:MouseEvent):void 
      { 
       var productAC:ArrayCollection = new ArrayCollection(); 
       var productList:XMLList = mainXML.product.(@catalog == attributeNameTxt.text); 
       for each(var item:XML in productList) 
       { 
        productAC.addItem({name:String(item.name[0]), 
         price:String(item.price[0]), 
         path:String(item.path[0])}); 
       } 
       trace(productAC); 
      } 

     ]]> 
    </fx:Script> 
    <s:layout> 
     <s:HorizontalLayout/> 
    </s:layout> 
    <s:TextInput id="attributeNameTxt" text="Thread Works"/> 
    <s:Button click="fetchHandler(event);"/> 
</s:WindowedApplication> 

IMPORTANT CODE : 
================= 
mainXML.product.(@catalog == "Thread Works") 
0
function onXmlLoaded (e:Event):void 
{ 
    xml = XML(e.target.data); 
    var xmlLength:Number = xml.product.length(); 
    for(var i:uint = 0; i<xmlLength; i++) 
    { 
      dataContainer.push({ 
      catalog : [email protected], 
      name : xml..name, 
      price : xml..price, 
      path : xml..path 
     }); 
    } 
    for(i=0;i<dataContainer.length;i++) 
    { 
      if(dataContainer[i].catalog[0]== "your String"){ 
       showName(); 
      } 
    } 
} 
+0

我只想跟踪“线程作品”不是所有的XML。 所有<产品目录=“线程工作”>与儿童。 – Rajkamal

+0

'trace(dataContainer [0] .catalog [0]);'设置数组的位置。 – Benny

+0

我想添加只有“线程作品”<产品目录=“线程作品”>和儿童阵列 – Rajkamal