@@ -429,7 +429,14 @@ private static void addText(final Map.Entry entry, final List<XmlStringBuilder>
429
429
private static void addElements (final XmlStringBuilder .Step identStep , final int ident , Map .Entry entry ,
430
430
Set <String > namespaces , final List <XmlStringBuilder > elems , final boolean addNewLine ) {
431
431
boolean parentTextFound = !elems .isEmpty () && elems .get (elems .size () - 1 ) instanceof XmlStringBuilderText ;
432
- XmlStringBuilder localBuilder = new XmlStringBuilderWithoutHeader (identStep , ident );
432
+ final XmlStringBuilder localBuilder ;
433
+ if (String .valueOf (((List ) entry .getValue ()).get (0 )).startsWith ("{" + TEXT )
434
+ || String .valueOf (((List ) entry .getValue ()).get (((List ) entry .getValue ()).size () - 1 ))
435
+ .startsWith ("{" + TEXT )) {
436
+ localBuilder = new XmlStringBuilderText (identStep , ident );
437
+ } else {
438
+ localBuilder = new XmlStringBuilderWithoutHeader (identStep , ident );
439
+ }
433
440
XmlArray .writeXml ((List ) entry .getValue (), localBuilder ,
434
441
String .valueOf (entry .getKey ()), parentTextFound , namespaces );
435
442
if (addNewLine ) {
@@ -683,9 +690,17 @@ public static String toXml(Map map, XmlStringBuilder.Step identStep) {
683
690
localMap = map ;
684
691
}
685
692
if (localMap == null || localMap .size () != 1
686
- || (( String ) (( Map .Entry ) localMap .entrySet ().iterator ().next ()).getKey ()).startsWith ("-" )
693
+ || (String . valueOf ((( Map .Entry ) localMap .entrySet ().iterator ().next ()).getKey () )).startsWith ("-" )
687
694
|| ((Map .Entry ) localMap .entrySet ().iterator ().next ()).getValue () instanceof List ) {
688
- XmlObject .writeXml (localMap , "root" , builder , false , U .<String >newLinkedHashSet ());
695
+ final String name ;
696
+ if (localMap != null && localMap .size () == 1
697
+ && ((Map .Entry ) localMap .entrySet ().iterator ().next ()).getValue () instanceof List
698
+ && !((List ) ((Map .Entry ) localMap .entrySet ().iterator ().next ()).getValue ()).isEmpty ()) {
699
+ name = String .valueOf (((Map .Entry ) localMap .entrySet ().iterator ().next ()).getKey ());
700
+ } else {
701
+ name = "root" ;
702
+ }
703
+ XmlObject .writeXml (localMap , name , builder , false , U .<String >newLinkedHashSet ());
689
704
} else {
690
705
XmlObject .writeXml (localMap , null , builder , false , U .<String >newLinkedHashSet ());
691
706
}
0 commit comments