more XML fixes
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/bd3f6c84 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/bd3f6c84 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/bd3f6c84 Branch: refs/heads/develop Commit: bd3f6c8457b3f15ef71c833d634b357651d138f9 Parents: fe4f9c1 Author: Harbs <[email protected]> Authored: Thu Feb 18 20:48:37 2016 +0200 Committer: Harbs <[email protected]> Committed: Thu Feb 18 20:48:37 2016 +0200 ---------------------------------------------------------------------- frameworks/projects/XML/src/main/flex/XML.as | 35 +++++++++++++++++------ 1 file changed, 26 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/bd3f6c84/frameworks/projects/XML/src/main/flex/XML.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/XML/src/main/flex/XML.as b/frameworks/projects/XML/src/main/flex/XML.as index cec9faf..d808a2a 100644 --- a/frameworks/projects/XML/src/main/flex/XML.as +++ b/frameworks/projects/XML/src/main/flex/XML.as @@ -340,7 +340,7 @@ package } private var _children:Array; - private var _attributes:Array; + private var _attributes:Array = []; private var _processingInstructions:Array; private var _parent:XML; private var _value:String; @@ -580,10 +580,10 @@ package */ public function childIndex():int { - if(!parent) + if(!_parent) return -1; - return parent.getIndexOf(this); + return _parent.getIndexOf(this); } /** @@ -700,7 +700,14 @@ package private function deleteChildAt(idx:int):void { - + if(idx < 0) + return; + if(idx >= _children.length) + return; + var child:XML = _children[idx]; + child.setParent(null); + _children.splice(idx,1); + _ } /** @@ -1642,16 +1649,24 @@ package { for(i=0;i<_attributes.length;i++) { - //TODO incomplete... - //if(_attributes[i].name.equals() ) + if(_attributes[i].name().equals(attr.name())) + { + _attributes[i].setValue(value); + return; + } //addChild(_att) } + if(value) + attr.setValue(value); + addChild(attr); } + return; } if(attr.indexOf("xmlns") == 0) { //it's a namespace declaration + //TODO This does not seem right. var ns:Namespace = new Namespace(value.toString()); if(attr.indexOf("xmlns:") == 0)// it has a prefix ns.prefix = attr.split(":")[1]; @@ -1660,6 +1675,7 @@ package else { //it's a regular attribute string + //TODO use toXMLName or toAttributeName to convert attr and assing it } @@ -1899,9 +1915,11 @@ package public function setParent(parent:XML):void { - if(_parent) - _parent.removeChild(this); + var oldParent:XML = _parent; _parent = parent; + //assign first to prevent the possiblity of a recursive loop + if(oldParent) + _parent.removeChild(this); } public function setValue(value:String):void @@ -2137,7 +2155,6 @@ package return indent + "<?" + name().localName + " " + _value + "?>"; // We excluded the other types, so it's a normal element - //TODO I'm here... // step 8. //ancestors if(!ancestors)
