2014-05-08 37 views
0

我是新来的XML,并且我已经分配了一个任务来根据某些条件将一个XML解析为另一个XML。例如:根据Flex中的条件将XML解析为基于条件的XML

<xml> 
<items> 
<item file="sms123" files loaded="20" date="22/12/2014"></item> 
<item file="sms23223" files loaded="25" date="22/12/2013"></item> 
<item file="mms345" files loaded="30" date="22/06/2014"></item> 
<item file="sms02821" files loaded="35" date="31/12/2012"></item> 
<item file="mms4738292" files loaded="15" date="21/1/2014"></item> 
</items> 
</xml> 

这是xml文件,我需要根据一些条件将它解析为中间XML文件。输出XML我想如下:

<xml> 
<items> 
<item file="sms" files loaded="80" > </item> 
<item file="mms" files loaded="45"></item> 
</items> 
</xml> 

所有我想要的是组文件名到基于的第一个字,并添加了组内加载的所有文件,单个文件名。

谢谢。

回答

0

看一看:

public static function getResult(input:XML):XML 
{ 
    var smscounter:int = 0; 
    var mmscounter:int = 0; 
    for each(var item:XML in XML(input.items[0]).children()) 
    { 
     var fileName:String = [email protected]; 
     if (fileName.indexOf("sms")) > 0) 
     { 
      smscounter += Number([email protected]); 
     } 
     else if (fileName.indexOf("mms")) > 0) 
     { 
      mmscounter += Number([email protected]); 
     } 
    } 

    var sms:XML = new XML("<item file='sms' files loaded='" + smscounter + "'/>"); 
    var mms:XML = new XML("<item file='mms' files loaded='" + mmscounter + "'/>"); 
    var items:XML = new XML(<items/>); 
    items.appendChild(sms); 
    items.appendChild(mms); 
    var xml:XML = new XML(<xml/>); 
    xml.appendChild(items); 
    return xml; 
} 

这应该做的伎俩。

+0

非常感谢。我仍然没有执行上面的代码,因为我不知道在Flex中写这段代码的位置。请帮忙。 –

+0

我编辑了我的答案,应该更易于理解。你给函数输入'XML',并产生所需的输出'XML'。由于这是'公共静态函数',它可以在任何地方执行。 –

+0

此代码显示如下错误: 1119:通过带有静态类型字符串的引用加载可能未定义的属性的访问。 它在此行显示一个错误 smscounter + = Number(fileName。@ loaded); –