【问题标题】:Renaming XML nodes using E4X in AS3在 AS3 中使用 E4X 重命名 XML 节点
【发布时间】:2009-05-11 01:48:07
【问题描述】:

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

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

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

那么在 AS3 中使用 E4X 执行此操作的最佳方法是什么?

【问题讨论】:

    标签: xml actionscript-3 e4x


    【解决方案1】:

    您可以在AS3中使用XML Object的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");
        }
    

    【讨论】:

    • 我希望会有类似的东西:data..nodes.setName("new_node_name");但这要求太高了。谢谢!
    【解决方案2】:

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2015-01-11
      • 2011-12-26
      相关资源
      最近更新 更多