package Ġcom . sp art an cookie . formatter Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġorg . w 3 c . dom . Node Ċ import Ġorg . w 3 c . dom . NodeList Ċ import Ġorg . xml . sax . Input Source Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . String Writer Ċ import Ġjavax . xml . parsers . Document BuilderFactory Ċ import Ġjavax . xml . transform . Output Keys Ċ import Ġjavax . xml . transform . Transformer Ċ import Ġjavax . xml . transform . Transformer Factory Ċ import Ġjavax . xml . transform . dom . DOM Source Ċ import Ġjavax . xml . transform . stream . Stream Result Ċ import Ġjavax . xml . xpath . XPath Ċ import Ġjavax . xml . xpath . XPath Constants Ċ import Ġjavax . xml . xpath . XPath Factory Ċ Ċ private Ġconst Ġval ĠXML _ IND ENT _ PROPERTY _ NAME Ġ= Ġ"{ http :// xml . apache . org / xsl t } indent - amount " Ċ private Ġconst Ġval ĠXML _ DEFAULT _ IND ENT Ġ= Ġ 4 Ċ private Ġconst Ġval ĠXML _ EXPRESSION Ġ= Ġ"// text ()[ normalize - space () =' '] " Ċ Ċ /** Ċ Ġ* ĠEnum Ġclass Ġwith ĠDataTypes . ĠAll ĠDataTypes Ġimplement Ġ[ com . sp art an cookie . formatter . I Format table ]. Ċ Ġ*/ Ċ enum Ġclass ĠDataType Ġ: ĠI Format table Ġ{ ĊĊĠĠĠ ĠXML Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġformat ( un formatted Text : ĠString ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTurn Ġxml Ġstring Ġinto Ġa Ġdocument ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠDocument BuilderFactory . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Document Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parse ( Input Source ( ByteArray InputStream ( un formatted Text . toByteArray ( charset ( Charsets . UTF _ 8 . name ())) ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġwh ites p aces Ġoutside Ġtags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . normalize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Path : ĠXPath Ġ= ĠXPath Factory . newInstance (). new XPath () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode List : ĠNode List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Path . evaluate ( XML _ EXPRESSION , Ġdocument , ĠXPath Constants . NODE SET ) Ġas ĠNode List ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġnode List . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode : ĠNode Ġ= Ġnode List . item ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . parentNode . removeChild ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSetup Ġpretty Ġprint Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransformer : ĠTransformer Ġ= ĠTransformer Factory . newInstance (). new Transformer (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Output Property ( XML _ IND ENT _ PROPERTY _ NAME , ĠXML _ DEFAULT _ IND ENT . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Output Property ( Output Keys . ENCODING , Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Output Property ( Output Keys . OM IT _ XML _ DECL AR ATION , Ġ" yes ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Output Property ( Output Keys . IND ENT , Ġ" yes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġpretty Ġprint Ġxml Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Writer Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransformer . transform ( DOM Source ( document ), ĠStream Result ( string Writer )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring Writer . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĊĠĠĠ ĠJSON Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġformat ( un formatted Text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Json ( un formatted Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠobjectMapper Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObjectMapper (). apply Ġ{ Ġconfigure ( Serialization Feature . IND ENT _ OUTPUT , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtree Ġ= ĠobjectMapper . read Tree ( un formatted Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . writeValue AsString ( tree ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ