我正在尝试更新XML结构的子节点中的值。新值应该来自Input TextField,其实例名称与我应该更新的节点的属性值相同。
例如,当关注名为"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>
有什么帮助吗?
EDIT(已解决):尝试实现@jens答案。我就是这样做的
nodeToModify.replace (VarHolder.activeLang, new XML("<" + VarHolder.activeLang + ">" + evt.target.text + "</" + VarHolder.activeLang + ">"));
XML.replace()
确实希望第二个参数是XML对象,然后将其转换为(XML-)字符串。含义:它将"<eng>Description</eng>
"替换为"rrr
",并按预期工作。您需要向它传递一个XML对象或传递"<eng>rrr</eng>
"。如果VarHolder.activeLang
的值明显为"eng",则可以使用以下内容:
nodeToModify.replace (VarHolder.activeLang , "<" + VarHolder.activeLang + ">" +
evt.target.text + "</" + VarHolder.activeLang + ">");
有关XML.replacement()的详细信息,请参阅此链接:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/XML.html#replace%28%29