在AS3中使用E4X重命名XML节点

时间:2009-05-11 01:48:07

标签: xml actionscript-3 e4x

我在AS3中有一个XML对象,其格式如下:

<data>
  <nodes>
    <item></item>
    <item></item>
    ...
  </nodes>
  <nodes>
    <item></item>
    <item></item>
    ...
  </nodes>
  ...
</data>

我的问题是我想将节点名称(“节点”和“项目”)重命名为更相关的内容,例如“ nodes ”可以是“ author ”,“ item ”可以是“ book ”。

那么在AS3中使用E4X的最佳方法是什么?

2 个答案:

答案 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);
    }

希望它有所帮助。