Apache flex 无法检查Adobe Flex 3中的现有XML节点

Apache flex 无法检查Adobe Flex 3中的现有XML节点,apache-flex,Apache Flex,我正在从服务器获取XML数据(请参考xmlData值)。 我需要: 使用非重复文件夹创建另一个XML 创建另一个XML,每月进行最终计数 我无法使用下面的代码执行此操作,并且无法获取重复记录 private var xmlData:XML = new XML("<root><SUMMARY_RECORD><FOLDER>Folder1</FOLDER><COUNT>100</COUNT><MONTH>Feb&

我正在从服务器获取XML数据(请参考xmlData值)。 我需要:

  • 使用非重复文件夹创建另一个XML
  • 创建另一个XML,每月进行最终计数
  • 我无法使用下面的代码执行此操作,并且无法获取重复记录

      private var xmlData:XML = new XML("<root><SUMMARY_RECORD><FOLDER>Folder1</FOLDER><COUNT>100</COUNT><MONTH>Feb</MONTH><QUARTER>Q1</QUARTER><YEAR>2014</YEAR></SUMMARY_RECORD><SUMMARY_RECORD><FOLDER>Folder1</FOLDER><COUNT>100</COUNT><MONTH>Feb</MONTH><QUARTER>Q1</QUARTER><YEAR>2014</YEAR></SUMMARY_RECORD></root>");
    
        var folderDataXML:XML = new XML("<root></root>");
        var folderDGDataXML:XML = new XML("<root></root>");
    
        private function loaded():void{
            var item:XML;
            folderDGDataXML.appendChild(new XML("<FOLDER_NAME><Name>ALL</Name></FOLDER_NAME>"));
            for each (item in xmlData.SUMMARY_RECORD){
                if (folderDGDataXML.FOLDER_NAME.(Name==item.FOLDER).toString() == ""){
                    folderDGDataXML.appendChild(new XML("<FOLDER_NAME><Name>"+item.FOLDER+"</Name></FOLDER_NAME>"));
                }   
    
                if (folderDataXML.SUMMARY_RECORD.(Name==item.MONTH).toXMLString() == ""){
                    folderDataXML.appendChild(new XML("<SUMMARY_RECORD><Name>"+item.MONTH+"</Name><COUNT>"+item.COUNT+"</COUNT></SUMMARY_RECORD>"));
                }else{
                    var count:int = Number(folderDataXML.SUMMARY_RECORD.(Name==item.MONTH).COUNT) + Number(item.COUNT);
                    folderDataXML.SUMMARY_RECORD.(Name==item.MONTH).COUNT = count;
                }
    
            }
        }
    
    private var xmlData:XML=newxml(“Folder1100FebQ12014Folder1100FebQ12014”);
    var folderDataXML:XML=newxml(“”);
    var folderDGDataXML:XML=newxml(“”);
    已加载私有函数():void{
    var项:XML;
    appendChild(新的XML(“全部”));
    对于每个(xmlData.SUMMARY_记录中的项目){
    if(folderDGDataXML.FOLDER_NAME.(NAME==item.FOLDER).toString()==“”){
    appendChild(新XML(“+item.FOLDER+”);
    }   
    if(folderDataXML.SUMMARY_记录。(名称==项.月)。toXMLString()==“”){
    appendChild(新XML(“+item.MONTH+”“+item.COUNT+”);
    }否则{
    变量计数:int=Number(folderDataXML.SUMMARY_记录)(Name==item.MONTH.count)+Number(item.count);
    folderDataXML.SUMMARY_记录(Name==item.MONTH).COUNT=COUNT;
    }
    }
    }
    
    最终输出,folderDGDataXML

    <root>
      <FOLDER_NAME>
        <Name>ALL</Name>
      </FOLDER_NAME>
      <FOLDER_NAME>
        <Name>Folder1</Name>
      </FOLDER_NAME>
      <FOLDER_NAME>
        <Name>Folder1</Name>
      </FOLDER_NAME>
    </root>
    
    
    全部的
    折叠1
    折叠1
    
    folderDataXML

    <root>
      <SUMMARY_RECORD>
        <Name>Feb</Name>
        <COUNT>100</COUNT>
      </SUMMARY_RECORD>
      <SUMMARY_RECORD>
        <Name>Feb</Name>
        <COUNT>100</COUNT>
      </SUMMARY_RECORD>
    </root>
    
    
    二月
    100
    二月
    100
    
    我做错了什么? 得到正确的XML后,我需要填充datagrid&column chart。

    试试这个

    在XML中,使用
    hasOwnProperty
    检查元素是否存在,或者我们可以在
    操作符中使用
    ,如果它是基于值的,则可以这样尝试
    folderDGDataXML.substands(“FOLDER_NAME”)(NAME.text()=“Folder1”)//始终返回XMLList。在length()的帮助下,我们可以预测具有值的元素是否发生

    希望这对你有用

    var xmlData:XML = new XML("<root><SUMMARY_RECORD><FOLDER>Folder1</FOLDER><COUNT>100</COUNT><MONTH>Feb</MONTH><QUARTER>Q1</QUARTER><YEAR>2014</YEAR></SUMMARY_RECORD><SUMMARY_RECORD><FOLDER>Folder1</FOLDER><COUNT>100</COUNT><MONTH>Feb</MONTH><QUARTER>Q1</QUARTER><YEAR>2014</YEAR></SUMMARY_RECORD></root>");
    
    var folderDataXML:XML = new XML("<root></root>");
    var folderDGDataXML:XML = new XML("<root></root>");
    var item:XML;
    
    folderDGDataXML.appendChild(new XML("<FOLDER_NAME><Name>ALL</Name></FOLDER_NAME>"));
    
    for each (item in xmlData.SUMMARY_RECORD)
    {
        var folderName:String =  item.FOLDER.text();
        var monthName:String =  item.MONTH.text();
    
        var existXMLList:XMLList = folderDGDataXML.descendants("FOLDER_NAME").(Name.text() == folderName);
    
        if (existXMLList.length() == 0)
        {
            folderDGDataXML.appendChild(new XML("<FOLDER_NAME><Name>"+item.FOLDER+"</Name></FOLDER_NAME>"));
        }   
    
        var monthXMLList:XMLList = folderDataXML.descendants("SUMMARY_RECORD").(Name.text() == monthName);
    
        if (monthXMLList.length() == 0)
        {
            folderDataXML.appendChild(new XML("<SUMMARY_RECORD><Name>"+item.MONTH+"</Name><COUNT>"+item.COUNT+"</COUNT></SUMMARY_RECORD>"));
        }
        else
        {
            monthXMLList..COUNT = Number(monthXMLList..COUNT) + Number(item.COUNT);
            //If more than one node it throws error. you need to use loop operation
    
        }
    
    }
    
    trace("folderDGDataXML" + folderDGDataXML);
    trace("folderDataXML" + folderDataXML);
    
    var xmlData:XML=newxml(“Folder1100FebQ12014Folder1100FebQ12014”);
    var folderDataXML:XML=newxml(“”);
    var folderDGDataXML:XML=newxml(“”);
    var项:XML;
    appendChild(新的XML(“全部”));
    对于每个(xmlData.SUMMARY_记录中的项目)
    {
    var folderName:String=item.FOLDER.text();
    var monthName:String=item.MONTH.text();
    var existXMLList:XMLList=folderDGDataXML.substands(“文件夹名称”)(NAME.text()==folderName);
    如果(existXMLList.length()=0)
    {
    appendChild(新XML(“+item.FOLDER+”);
    }   
    var monthXMLList:XMLList=folderDataXML.SUMMARY(“SUMMARY_RECORD”)(Name.text()==monthName);
    如果(monthXMLList.length()=0)
    {
    appendChild(新XML(“+item.MONTH+”“+item.COUNT+”);
    }
    其他的
    {
    monthXMLList..COUNT=编号(monthXMLList..COUNT)+编号(item.COUNT);
    //如果有多个节点,它会抛出错误。您需要使用循环操作
    }
    }
    跟踪(“folderDGDataXML”+folderDGDataXML);
    跟踪(“folderDataXML”+folderDataXML);
    
    Hi Raja,谢谢你的回复。谢谢你的回复。在使用另一个值(如)更改元素后,我的代码工作正常。