package Ġcom . but t ong ames . but ter fly core . xml . k bin xml Ċ Ċ import Ġorg . w 3 c . dom . Attr Ċ import Ġorg . w 3 c . dom . Document Ċ import Ġorg . w 3 c . dom . Element Ċ import Ġorg . w 3 c . dom . Node Ċ import Ġorg . xml . sax . Input Source Ċ import Ġjava . io . File Ċ import Ġjava . io . String Reader Ċ import Ġjava . io . String Writer Ċ import Ġjavax . xml . parsers . Document BuilderFactory Ċ import Ġjavax . xml . transform . Output Keys Ċ import Ġjavax . xml . transform . Transformer Factory Ċ import Ġjavax . xml . transform . dom . DOM Source Ċ import Ġjavax . xml . transform . stream . Stream Result Ċ Ċ var ĠElement . text : ĠString ĊĠĠĠ Ġget () Ġ= Ġthis . childNodes ( Node . TEXT _ NODE ). first OrNull ()?. node Value Ġ?: Ġ"" ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġthis . childNodes ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchildren . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġchildren . item ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . nodeType Ġ== ĠNode . TEXT _ NODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . removeChild ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġthis . owner Document . createTextNode ( value ) ĊĠĠĠĠĠĠĠ Ġthis . appendChild ( e ) ĊĠĠĠ Ġ} Ċ Ċ fun ĠElement . childNodes ( type : ĠShort ): ĠSequence < Node > Ġ{ ĊĠĠĠ Ġval Ġchildren Ġ= Ġthis . childNodes ĊĠĠĠ Ġreturn Ġsequence Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchildren . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġchildren . item ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . nodeType Ġ== Ġtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠElement . firstChild ( name : ĠString ): ĠElement ? Ġ{ ĊĠĠĠ Ġvar Ġchild : ĠNode ? Ġ= Ġthis . firstChild ĊĠĠĠ Ġwhile Ġ( child Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( child Ġis ĠElement Ġ&& Ġname Ġ== Ġchild . nodeName ) Ġreturn Ġchild ĊĠĠĠĠĠĠĠ Ġchild Ġ= Ġchild . next Sibling ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ val ĠElement . child Elements : ĠSequence < Element > ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . childNodes ( Node . ELEMENT _ NODE ) Ġas ĠSequence < Element > ĊĠĠĠ Ġ} Ċ Ċ val ĠElement . attribute List : ĠList < Attr > ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Attr >() ĊĠĠĠĠĠĠĠ Ġval Ġattrs Ġ= Ġthis . attributes !! ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġattrs . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( attrs . item ( i ) Ġas ĠAttr ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ Ċ fun ĠDocument . pretty String ( indent : ĠInt Ġ= Ġ 4 ): ĠString Ġ{ ĊĠĠĠ Ġthis . xml Standalone Ġ= Ġtrue ĊĠĠĠ Ġval Ġstring Writer Ġ= ĠString Writer () ĊĠĠĠ Ġval Ġxml Output Ġ= ĠStream Result ( string Writer ) ĊĠĠĠ Ġval Ġtransformer Factory Ġ= ĠTransformer Factory . newInstance () ĊĠĠĠ Ġtransformer Factory . setAttribute (" indent - number ", Ġindent ) ĊĠĠĠ Ġval Ġtransformer Ġ= Ġtransformer Factory . new Transformer () ĊĊĠĠĠ Ġtransformer . setOutput Property ( Output Keys . IND ENT , Ġ" yes ") ĊĠĠĠ Ġtransformer . setOutput Property ( Output Keys . DOCTYPE _ PUBLIC , Ġ""); ĊĠĠĠ Ġtransformer . transform ( DOM Source ( this ), Ġxml Output ) ĊĠĠĠ Ġreturn Ġxml Output . writer . toString () Ċ } Ċ Ċ fun ĠString . to Xml (): ĠDocument Ġ{ ĊĠĠĠ Ġval Ġdb Ġ= ĠDocument BuilderFactory . newInstance (). new Document Builder () ĊĠĠĠ Ġval Ġinput Ġ= ĠInput Source () ĊĠĠĠ Ġinput . character Stream Ġ= Ġ( String Reader ( this )) ĊĠĠĠ Ġreturn Ġdb . parse ( input ) Ċ } Ċ Ċ fun ĠFile . to Xml (): ĠDocument Ġ{ ĊĠĠĠ Ġval Ġdb Ġ= ĠDocument BuilderFactory . newInstance (). new Document Builder () ĊĠĠĠ Ġreturn Ġdb . parse ( this ) Ċ }