Переименование узлов XML с использованием E4X в AS3

У меня есть объект XML в AS3, который отформатирован следующим образом:

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

Моя проблема в том, что я хочу переименовать имена узлов («узлы» и «элемент») во что-то более подходящее, например. «узлы» может быть «автором», а «item» может быть «книгой».

Итак, как лучше всего сделать это с E4X в AS3?


person Adam Harte    schedule 11.05.2009    source источник


Ответы (2)


вы можете использовать метод setName() объекта XML в AS3.

пример:

   //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");
    }
person OXMO456    schedule 11.05.2009
comment
Я надеялся, что будет что-то вроде: data..nodes.setName (new_node_name); Но это было бы слишком много. Спасибо! - person Adam Harte; 12.05.2009

Насколько мне известно, в 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);
    }

Надеюсь, поможет.

person Tyler Egeto    schedule 11.05.2009