根据 Flex 中的条件将 XML 解析为 XML
Posted
技术标签:
【中文标题】根据 Flex 中的条件将 XML 解析为 XML【英文标题】:Parsing an XML to XML based on conditions in Flex 【发布时间】:2014-06-25 10:15:57 【问题描述】:我是 XML 新手,我被分配了一项任务,即根据某些条件将一个 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>
我只想根据第一个单词将文件名分组为一个文件名,然后将组内加载的所有文件相加。
谢谢。
【问题讨论】:
【参考方案1】:看看:
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 = item.@file;
if (fileName.indexOf("sms")) > 0)
smscounter += Number(item.@loaded);
else if (fileName.indexOf("mms")) > 0)
mmscounter += Number(item.@loaded);
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;
这应该可以解决问题。
【讨论】:
非常感谢兄弟。我还没有执行上面的代码,因为我不知道在Flex中哪里写这个代码。请帮忙。 我编辑了我的答案,应该更容易理解。您将输入XML
提供给函数,它会产生所需的输出XML
。由于这是public static function
,它可以在任何地方执行。
此代码显示如下错误: 1119: 访问可能未定义的属性通过静态类型字符串的引用加载。它在这一行显示错误 smscounter += Number(fileName.@loaded);
发生了动作脚本错误,提示:TypeError: Error #1090: XML parser failure: element is malformed.
再次编辑。暂时无法测试代码,我的环境没有搭建好。以上是关于根据 Flex 中的条件将 XML 解析为 XML的主要内容,如果未能解决你的问题,请参考以下文章