0

XML構造のサブノードの値を更新しようとしています。新しい値は、インスタンス名が更新するノードの属性の値と同じである入力テキストフィールドから取得する必要があります。

たとえば、「label10」というテキストフィールドにフォーカスを合わせるときは、ノードを編集する必要があります。

<label id="label10">
    <eng>Description</eng>
    <de>DE Description</de>
</label>

...そしてそれは大丈夫です、私はこのコールバック関数を使用してそれを達成しました:

private function onFocusOut (evt:FocusEvent):void {
        var nodeToModify:XML = xmlFillData.label.(@id==evt.target.name)[0];
        trace ("nodeToModify is " +nodeToModify );
}

今私の問題は、VarHolderと呼ばれる静的クラスで定義された変数に応じて、サブノードengまたはdeのコンテンツを置き換えたいのですが、それを行うことができません。

コールバック関数内でこの行を使用しようとしました:

 nodeToModify.replace (VarHolder.activeLang , evt.target.text);

しかし、nodeToModifyをトレースすると、これが結果になります(タグが消えました)

<label id="label10">
rrr
<de>DE Description</de>

何か助けはありますか?


編集(および解決):@jens回答を実装しようとしています。これが私がやった方法です

 nodeToModify.replace (VarHolder.activeLang,  new XML("<" + VarHolder.activeLang + ">" +  evt.target.text + "</" + VarHolder.activeLang + ">"));
4

1 に答える 1

2

XML.replace()2番目のパラメーターがXML-Objectであると想定しており、XML-Objectは(XML-)文字列に変換されます。意味:' <eng>Description</eng>'を''に置き換えrrr、意図したとおりに機能します。XMLオブジェクトを渡すか、' <eng>rrr</eng>'を渡す必要があります。の値VarHolder.activeLangが明らかに「eng」である場合は、次を使用できます。

nodeToModify.replace (VarHolder.activeLang ,  "<" + VarHolder.activeLang + ">" + 
                           evt.target.text + "</" + VarHolder.activeLang + ">");

XML.replace()の詳細については、次のリンクを参照してください:http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XML.html#replace%28%29

于 2012-09-01T15:23:40.153 に答える