我在AS3中有一个XML对象,其格式如下:
<data>
<nodes>
<item></item>
<item></item>
...
</nodes>
<nodes>
<item></item>
<item></item>
...
</nodes>
...
</data>
我的问题是我想将节点名称(“节点”和“项目”)重命名为更相关的内容,例如“ nodes ”可以是“ author ”,“ item ”可以是“ book ”。
那么在AS3中使用E4X的最佳方法是什么?
答案 0 :(得分:7)
您可以在AS3中使用XML对象的setName()
方法。
示例:
//extract all nodes named "nodes"
var l:XMLList=data..nodes;
for each(var n:XML in l){
n.setName("new_node_name");
}
//extract all nodes named "item"
var l2:XMLList=data..item;
for each(var n2:XML in l2){
n2.setName("new_item_name");
}
答案 1 :(得分:0)
据我所知,在ActionScript中无法原生地执行此操作,但是这是一个简单的功能,可以实现这一点。首先,我将其转换为字符串,然后使用简单的正则表达式来查找和替换所有实例。
function replaceAll(findTag:String, replaceWith:String, source:XML):XML
{
var xmls:String = source.toXMLString();
var findPattern:RegExp = new RegExp(findTag, "g");
xmls = xmls.replace(findPattern, replaceWith);
return new XML(xmls);
}
希望它有所帮助。