1

ブラウザ以外のコンテキスト (DOM なし) で XML を操作するために JavaScript を使用しており、タグのリストの名前を変更するための E4X 式を探しています。特定のタグについて、それが何と呼ばれているかを事前に知っているとは限りません。また、特定の部分文字列が含まれている場合にのみ名前を変更したいと考えています。

私が非常に工夫した例として、私は持っているかもしれません:

someXML = <Favourites>
              <JillFaveColour>Blue</JillFaveColour>
              <JillFaveCandy>Smarties</JillFaveCandy>
              <JillFaveFlower>Rose</JillFaveFlower>
          <Favourites>

XMLを次のように変換したい:

<Favourites>
    <GaryFaveColour>Blue</GaryFaveColour>
    <GaryFaveCandy>Smarties</GaryFaveCandy>
    <GaryFaveFlower>Rose</GaryFaveFlower>
<Favourites>

ただし、タグが増えたり減ったりする可能性があり、完全な名前が何であるかを事前に知ることはできません. 特定の部分文字列が含まれている場合にのみ名前を変更します (私の例では、部分文字列は「ジル」です)。

4

3 に答える 3

2

要素の名前を変更するには、 を使用しますsetLocalName(newName)。「事前にすべてのタグ名がわからない」という問題については、要素を繰り返し処理し、それらのlocalName()メソッド (if node.length() === 1 && node.nodeKind() === "element") を呼び出してタグ名を取得します。

于 2009-11-24T20:25:12.403 に答える
1

何かのようなもの:

var children= someXML.children();
for (var i= children.length; i-->0;)
    if (children[i].nodeKind()==='element')
        element.setLocalName(element.localName().split('Jill').join('Gary'));
于 2009-11-24T20:24:28.830 に答える
0

これらのノードを手動で追加してから削除することを検討してください。

//msg is your xml object
msg['Favorites']['GaryFaveColor'] = msg['Favorites']['JillFaveColour'];
msg['Favorites']['GaryFaveCandy'] = msg['Favorites']['JillFaveCandy'];
msg['Favorites']['GaryFaveFlower'] = msg['Favorites']['JillFaveFlower'];

//now del Jill
delete msg['Favorites']['JillFaveColour'];
delete msg['Favorites']['JillFaveCandy'];
delete msg['Favorites']['JillFaveFlower'];
于 2009-11-24T19:54:34.993 に答える