0

AS3に次のようにフォーマットされたXMLオブジェクトがあります。

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

私の問題は、ノード名(「nodes」と「item」)の名前をより関連性の高い名前に変更したいことです。たとえば、「nodes」は「author」、「item」は「book」になります。

では、AS3のE4Xでこれを行うための最良の方法は何でしょうか?

4

2 に答える 2

7

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");
    }
于 2009-05-11T08:12:36.010 に答える
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);
    }

それが役に立てば幸い。

于 2009-05-11T05:47:10.820 に答える