Skip to content

Commit b1c06b2

Browse files
xhaggijavadev
authored andcommitted
Fix unexpected Xml.getRootName(localMap) returns null.
1 parent 0e13442 commit b1c06b2

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

src/main/java/com/github/underscore/lodash/Xml.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -960,18 +960,21 @@ private static XmlStringBuilder checkStandalone(String encoding, XmlStringBuilde
960960
private static String getRootName(final Map localMap) {
961961
int foundAttrs = 0;
962962
int foundElements = 0;
963+
int foundListElements = 0;
963964
if (localMap != null) {
964965
for (Map.Entry entry : (Set<Map.Entry>) localMap.entrySet()) {
965966
if (String.valueOf(entry.getKey()).startsWith("-")) {
966967
foundAttrs += 1;
967968
} else if (!String.valueOf(entry.getKey()).startsWith(COMMENT)
968-
&& !String.valueOf(entry.getKey()).startsWith("?")
969-
&& (!(entry.getValue() instanceof List) || ((List) entry.getValue()).size() <= 1)) {
969+
&& !String.valueOf(entry.getKey()).startsWith("?")) {
970+
if (entry.getValue() instanceof List && ((List) entry.getValue()).size() > 1) {
971+
foundListElements += 1;
972+
}
970973
foundElements += 1;
971974
}
972975
}
973976
}
974-
return foundAttrs == 0 && foundElements == 1 ? null : "root";
977+
return foundAttrs == 0 && foundElements == 1 && foundListElements == 0 ? null : "root";
975978
}
976979

977980
public static String toXml(Map map) {

src/test/java/com/github/underscore/lodash/LodashTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,16 @@ public void jsonToXml() {
600600
U.chain("{\n \"a\": {\n }\n}").jsonToXml().item());
601601
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root empty-array=\"true\"></root>",
602602
U.jsonToXml("[]"));
603+
assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
604+
+ "<root>\n"
605+
+ " <a>\n"
606+
+ " <b>v1</b>\n"
607+
+ " </a>\n"
608+
+ " <c>v1</c>\n"
609+
+ " <c>v2</c>\n"
610+
+ " <c>v3</c>\n"
611+
+ "</root>",
612+
U.jsonToXml("{\"a\" : {\n \"b\" : \"v1\" }, \"c\" : [\"v1\", \"v2\", \"v3\"]}"));
603613
}
604614

605615
@Test

0 commit comments

Comments
 (0)