
(источник: rigel222.com )
Все, что я хочу сделать, это изменить текстовое значение XML, соответствующее узлу CURRENTLY SELECTED в дереве. Все это просто кусок пирога, кроме фактического изменения «abc» на «xyz».
[Bindable]
public var xml:XML=
<rootnode>
Content A
<parentnode Name="value" Attr2="4">
parent content1
<childnode Name="child" Attr2="fun">
child content
</childnode>
parent content 2
</parentnode>
abc <!-- Selected Node When Button Is Pressed-->
</rootnode>
;
private function XMLTreeLabel(node:Object):String{
if (XMLTree.dataDescriptor.isBranch(node)) {
return(node.name());
} else {
return(node.valueOf());
}
}
private function UpdateXMLContent():void
{
var Node:XML=XMLTree.selectedItem as XML;
if ((Node.hasSimpleContent())&&
(Node.nodeKind()=="text")&&
(Node.valueOf()=="abc")) {
Node='xyz' as XML; // I Get To This Line Of Code,
// But It Is Impossible To MODIFY
// The Value Of The Node
// None of these ways work either:
// XMLTree.selectedItem=XML('xyz');
// Node=XML('xyz');
// Node.text()[0]='xyz';
// Node.firstChild.nodeValue='xyz';
// Node.setChildren('xyz');
// Node[0]='xyz';
// Is changing the content of xml an unreasonable/impossible
// expectation for Flex?
}
}
[... какой-то код опущен ...]
<mx:Tree height="100%" width="100%"
dataProvider="{xml}" labelFunction="XMLTreeLabel"
id="XMLTree"></mx:Tree>
<mx:Button x="185" y="335" label="Button"
click="UpdateXMLContent()"/>
P.S. Я знаю, что могу сказать xml.rootnode.blahblahblah = что угодно, но мне нужно изменить запись, представленную в дереве, и поэтому не могу жестко прописать путь к узлу.