Переименование узлов XML с использованием E4X в AS3 - PullRequest
0 голосов
/ 11 мая 2009

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

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

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

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

Ответы [ 2 ]

7 голосов
/ 11 мая 2009

вы можете использовать метод 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");
    }
0 голосов
/ 11 мая 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);
    }

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

...