package{ public class DOMExpand { var doc:XML; function DOMExpand(s:String){ var st:CompactTokenizer = new CompactTokenizer(s); var rootName:String; while (st.nextToken()!="[") rootName=st.token(); doc = expand(st,rootName); } public function toString():String { return doc.toXMLString(); } function expand(st:CompactTokenizer,elementName:String):XML{ var elem:XML= <{elementName}/>; st.skip("["); while(st.token()=="@"){ var attName:String=st.skip("@"); st.nextToken(); elem.@[attName]=st.skip("["); st.nextToken(); st.skip("]"); } while (st.token()!="]"){ var s:String = st.token().replace(/^\s*(.*?)\s*$/,"$1"); st.nextToken(); if(st.token()=="[") elem.appendChild(expand(st,s)); else elem.appendChild(s); } st.skip("]"); return elem; } } }