代码之家  ›  专栏  ›  技术社区  ›  Adam Harte

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

  •  0
  • Adam Harte  · 技术社区  · 15 年前

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

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

    节点 “可能是” 著者 “,以及” “可能是”

    那么,在AS3中使用E4X实现这一点的最佳方法是什么呢?

    2 回复  |  直到 15 年前
        1
  •  7
  •   OXMO456    15 年前

    你可以使用 setName() AS3中XML对象的方法。

    例子:

       //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");
        }
    
        2
  •  0
  •   Tyler Egeto    15 年前

    据我所知,在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);
        }