@@ -867,31 +867,41 @@ public static String toXml(Map map, XmlStringBuilder.Step identStep) {
867867 final Map localMap ;
868868 if (map != null && map .containsKey (ENCODING )) {
869869 localMap = (Map ) U .clone (map );
870- localMap .remove (ENCODING );
871- if (map .containsKey (STANDALONE )) {
872- builder = new XmlStringBuilderWithoutRoot (identStep , String .valueOf (map .get (ENCODING )),
873- " standalone=\" " + (YES .equals (map .get (STANDALONE )) ? YES : "no" ) + "\" " );
874- localMap .remove (STANDALONE );
875- } else {
876- builder = new XmlStringBuilderWithoutRoot (identStep , String .valueOf (map .get (ENCODING )), "" );
877- }
870+ builder = checkStandalone (String .valueOf (localMap .remove (ENCODING )), identStep , localMap );
878871 } else if (map != null && map .containsKey (STANDALONE )) {
879- builder = new XmlStringBuilderWithoutRoot (identStep , UTF_8 .name (), " standalone=\" "
880- + (YES .equals (map .get (STANDALONE )) ? YES : "no" ) + "\" " );
881872 localMap = (Map ) U .clone (map );
873+ builder = new XmlStringBuilderWithoutRoot (identStep , UTF_8 .name (),
874+ " standalone=\" " + (YES .equals (map .get (STANDALONE )) ? YES : "no" ) + "\" " );
882875 localMap .remove (STANDALONE );
883876 } else {
884877 builder = new XmlStringBuilderWithoutRoot (identStep , UTF_8 .name (), "" );
885878 localMap = map ;
886879 }
880+ checkLocalMap (builder , localMap );
881+ return builder .toString ();
882+ }
883+
884+ private static void checkLocalMap (final XmlStringBuilder builder , final Map localMap ) {
887885 if (localMap == null || localMap .size () != 1
888- || XmlValue .getMapKey (map ).startsWith ("-" )
886+ || XmlValue .getMapKey (localMap ).startsWith ("-" )
889887 || ((Map .Entry ) localMap .entrySet ().iterator ().next ()).getValue () instanceof List ) {
890888 XmlObject .writeXml (localMap , getRootName (localMap ), builder , false , U .<String >newLinkedHashSet (), false );
891889 } else {
892890 XmlObject .writeXml (localMap , null , builder , false , U .<String >newLinkedHashSet (), false );
893891 }
894- return builder .toString ();
892+ }
893+
894+ private static XmlStringBuilder checkStandalone (String encoding , XmlStringBuilder .Step identStep ,
895+ final Map localMap ) {
896+ final XmlStringBuilder builder ;
897+ if (localMap .containsKey (STANDALONE )) {
898+ builder = new XmlStringBuilderWithoutRoot (identStep , encoding ,
899+ " standalone=\" " + (YES .equals (localMap .get (STANDALONE )) ? YES : "no" ) + "\" " );
900+ localMap .remove (STANDALONE );
901+ } else {
902+ builder = new XmlStringBuilderWithoutRoot (identStep , encoding , "" );
903+ }
904+ return builder ;
895905 }
896906
897907 @ SuppressWarnings ("unchecked" )
0 commit comments