package Ġcom . will . utils . xml Ċ Ċ import Ġcom . will . utils . Value Ċ import Ġorg . dom 4 j .* Ċ import Ġorg . dom 4 j . io . XML Writer Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġzo um y Ġon Ġ 2 0 1 7 / 5 / 1 2 Ġ 1 3 : 4 5 . Ċ Ġ*/ Ċ object ĠXML Utils Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( XML Utils :: class . java ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¼łåħ¥ ä¸Ģä¸ª xml æĸĩä»¶ è§£æŀĲ æĪĲ map ĊĊĠĠĠĠ Ġ* Ġ@ param Ġfile Ġthe ĠFile ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIOException ĠĠĠĠĠĠ Ġthe Ġio Ġexception ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠDocument Exception Ġthe Ġdocument Ġexception ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Auth ĠWill ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Date Ġ 2 0 1 6 Ġ- 0 9 - 0 9 Ġ 1 6 : 5 1 : 4 7 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġxml 2 XML Object ( file : ĠFile ): ĠXML Object Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmap Ġ= ĠXML Object () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Ġ= Ġxml 2 XML Object ( FileInputStream ( file )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" xml Ġto Ġmap Ġerror :{} ", Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¼łåħ¥ ä¸Ģä¸ª input stream Ġ è§£æŀĲ æĪĲ map ĊĊĠĠĠĠ Ġ* Ġ@ param Ġis Ġthe ĠInputStream ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠDocument Exception Ġthe Ġdocument Ġexception ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Auth ĠWill ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Date Ġ 2 0 1 6 Ġ- 0 9 - 0 9 Ġ 1 6 : 5 1 : 4 7 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġxml 2 XML Object (` is `: ĠInputStream ?): ĠXML Object Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġvar Ġstr Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBufferedReader ( InputStream Reader (` is ` !! )). use Ġ{ Ġbr Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr . forEach Line Ġ{ Ġsb . append ( str ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" xml Ġto Ġmap Ġerror :{} ", Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` is ` Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġxml 2 XML Object ( sb . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¼łåħ¥ ä¸Ģä¸ª xml åŃĹç¬¦ä¸² è§£æŀĲ æĪĲ map ĊĊĠĠĠĠ Ġ* Ġ@ param Ġxml Str Ġthe Ġxml Ġstr ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Auth ĠWill ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Date Ġ 2 0 1 6 Ġ- 0 9 - 0 9 Ġ 1 6 : 5 1 : 4 7 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġxml 2 XML Object ( xml Str : ĠString ): ĠXML Object Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠXML Object () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠDocument Helper . parse Text ( xml Str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Element Ġ= Ġdoc . root Element ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtm Ġ= ĠXML Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . put ( root Element . name , Ġtm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml 2 XML Object ( root Element , Ġtm ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDocument Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" xml Ġto Ġmap Ġerror :{} ", Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmap Ġ åĮħ è£ħ æĪĲ XML ĊĊĠĠĠĠ Ġ* Ġ@ param Ġmap ĠĠĠ Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter Ġthe Ġwriter Ġwriter å¯¹è±¡ çĶ¨äºİ åĨĻ ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwriter . toString Ġå½ĵ ä¸º String Writer æĹ¶ ï¼Į æīį æĺ¯ éľĢè¦ģ çļĦ åı¯ è¯» çļĦ String ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Auth ĠWill ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Date Ġ 2 0 1 6 Ġ- 0 9 - 1 3 Ġ 1 3 : 2 8 : 4 5 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap 2 Xml ( map : ĠXML Object , Ġwriter : ĠWriter ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠDocument Helper . create Document () ĊĠĠĠĠĠĠĠ Ġval Ġroot String Ġ= Ġmap . keys . iterator (). next () ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġdocument . addElement ( root String ) ĊĠĠĠĠĠĠĠ Ġmap 2 Xml ( map [ root String ] Ġas ĠMap < String , ĠAny >, root ) Ċ // ĠĠĠĠĠĠĠ Ġmap 2 Xml ( map [ root String ] Ġas ĠMap < *, Ġ*> ?, Ġroot ) ĊĠĠĠĠĠĠĠ Ġvar Ġx w : ĠXML Writer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx w Ġ= ĠXML Writer ( writer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx w . is Escape Text Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx w . write ( document ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġwriter . toString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" map Ġto Ġxml Ġerror :{} ", Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( xw Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx w . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmap Ġ åĮħ è£ħ æĪĲ xml Ġ å¹¶ è¾ĵåĩº åĪ° File ĊĊĠĠĠĠ Ġ* Ġ@ param Ġmap Ġ Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfile Ġthe Ġfile ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Auth ĠWill ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Date Ġ 2 0 1 6 Ġ- 0 9 - 1 2 Ġ 1 5 : 4 7 : 0 8 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap 2 Xml ( map : ĠXML Object , Ġfile : ĠFile ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileOutputStream ( file ). use Ġ{ Ġos Ġ-> Ġresult Ġ= Ġmap 2 Xml ( map , Ġos ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" map Ġto Ġxml Ġerror :{} ", Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmap Ġ åĮħ è£ħ æĪĲ xml Ġä»¥ æµģ å½¢å¼ı è¾ĵåĩº ĊĊĠĠĠĠ Ġ* Ġ@ param Ġmap Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġos Ġ Ġthe Ġos ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġoutput Ġstream ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Auth ĠWill ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Date Ġ 2 0 1 6 Ġ- 0 9 - 1 2 Ġ 1 5 : 5 4 : 3 3 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap 2 Xml ( map : ĠXML Object , Ġos : ĠOutputStream ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġo sw Ġ= ĠOutputStream Writer ( os ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmap 2 Xml ( map , Ġo sw ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmap Ġ åĮħ è£ħ æĪĲ xml Ġ å¹¶ è¾ĵåĩº åŃĹç¬¦ä¸² ĊĊĠĠĠĠ Ġ* Ġ@ param Ġmap Ġthe Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Auth ĠWill ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ Date Ġ 2 0 1 6 Ġ- 0 9 - 1 2 Ġ 1 5 : 4 7 : 0 8 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap 2 Xml ( map : ĠXML Object ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Writer (). use Ġ{ Ġsw Ġ-> Ġresult Ġ= Ġmap 2 Xml ( map , Ġsw ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error ("", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¸å¿ĥ æĸ¹æ³ķ è§£æŀĲ xml 2 XML Object Ġ Ġæł¹æį® Ġhttp :// www . tu ic ool . com / articles / m 2 Af ym Ġä¿®æĶ¹ ĊĊĠĠĠĠ Ġ* Ġ@ param Ġelement ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġobject ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġxml 2 XML Object ( element : ĠElement , Ġ` object `: ĠXML Object ): ĠXML Object Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åĬłåħ¥ å±ŀæĢ§ ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= Ġelement . attributes () Ġas ĠList < Attribute > ĊĠĠĠĠĠĠĠ Ġfor Ġ( attribute Ġin Ġattributes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` object `. put ( attribute . name , Ġattribute . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ ĠSystem . out . println ( element ); ĊĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġelement . elements () Ġas ĠList < Element > ĊĠĠĠĠĠĠĠ Ġif Ġ( elements . isEmpty ()) Ġ{// æ²¡æľī åŃĲ èĬĤçĤ¹ åį³ æłĩçŃ¾ åĨħ æĸĩæľ¬ è®¾ç½® key ä¸º value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` object `. put (" value ", Ġelement . text Trim ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! element . is Root Element ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelement . getText Trim (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( elements . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtm Ġ= ĠXML Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` object `. put ( elements [ 0 ]. name , Ġxml 2 XML Object ( elements [ 0 ], Ġtm )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( elements . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¤ļä¸ª åŃĲ èĬĤçĤ¹ çļĦè¯Ŀ å°± å¾Ĺ èĢĥèĻĳ list çļĦ æĥħåĨµ äºĨ ï¼Į æ¯Ķå¦Ĥ å¤ļä¸ª åŃĲ èĬĤçĤ¹ æľī èĬĤçĤ¹ åĲįç§° çĽ¸åĲĮ çļĦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æŀĦéĢł ä¸Ģä¸ª map çĶ¨æĿ¥ åİ» éĩį ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Map Ġ= ĠHashMap < String , ĠElement >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ele Ġin Ġelements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Map . put ( ele . name , Ġele ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Set Ġ= Ġtemp Map . entries ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue 1 ) Ġin Ġentry Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnamespace Ġ= Ġvalue 1 . namespace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements 2 Ġ= Ġelement . elements ( QName ( key , Ġnamespace )) Ġas ĠList < Element > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ åĲĮ åĲį çļĦ æķ° çĽ® å¤§äºİ 1 åĪĻ è¡¨ç¤º è¦ģ æŀĦå»º list ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( elements 2 . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( ele Ġin Ġelements 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtm Ġ= ĠXML Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( xml 2 XML Object ( ele , Ġtm )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` object `. put ( key , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĲĮ åĲį çļĦ æķ°éĩı ä¸į å¤§äºİ 1 åĪĻ çĽ´æİ¥ éĢĴ å½Ĵ åİ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtm Ġ= ĠXML Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` object `. put ( key , Ġxml 2 XML Object ( elements 2 [ 0 ], Ġtm )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ` object ` ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmap Ġ è½¬ xml Ġ æł¸å¿ĥ æĸ¹æ³ķ ĊĊĠĠĠĠ Ġ* Ġ@ param Ġmap ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġelement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap 2 Xml ( map : ĠMap < String , ĠAny >, Ġelement : ĠElement ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= Ġmap . entries ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue 1 ) Ġin Ġentries ) Ġ{// è¿Ńä»£ map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value 1 Ġis ĠString Ġ|| Ġvalue 1 Ġis ĠNumber ) Ġ{// å¦Ĥæŀľ value æĺ¯ string çĽ´æİ¥ åĨĻåħ¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" value " Ġ== Ġkey ) Ġ{// å¦Ĥæŀľ key æĺ¯ value åĪĻ çĽ´æİ¥ æ·»åĬł åĪ° text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . add Text ( Value . of ( value 1 , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . addAttribute ( key , ĠValue . of ( value 1 , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value 1 Ġis ĠMap < *, Ġ* >) Ġ{// å¦Ĥæŀľ value æĺ¯ map Ġ éĢĴ å½Ĵ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap 2 Xml ( value 1 Ġas ĠMap < String , ĠAny >, Ġelement . addElement ( QName ( key ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value 1 Ġis ĠList <* >) Ġ{// å¦Ĥæŀľ value æĺ¯ list ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( o Ġin Ġvalue 1 ) Ġ{// è¿Ńä»£ list Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o Ġis ĠString Ġ|| Ġo Ġis ĠNumber ) Ġ{// å¦Ĥæŀľ æĺ¯ string Ġ çĽ´æİ¥ åĨĻåħ¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . addElement ( entry . getKey ()). add Text ( String . valueOf ( o )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" value " Ġ== Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . add Text ( Value . of ( value 1 , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . addAttribute ( key , Ġo . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{// åºĶè¯¥ ä¸įä¼ļ æľī map ä»¥ ä¸º ç±»åŀĭ Ġ éĢĴ å½Ĵ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap 2 Xml ( o Ġas ĠMap < String , ĠAny >, Ġelement . addElement ( QName ( key ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }