# HG changeset patch # User Sascha L. Teichmann # Date 1338544147 0 # Node ID cdc8b7c64856eedb954e52d28ae0d579dca33cfa # Parent d5db5483b376f4e8ca14e579af72c7b65352a19c JSON2XML: Remove extra from the XML generated by JSON lists containing only objects. artifacts/trunk@4566 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r d5db5483b376 -r cdc8b7c64856 ChangeLog --- a/ChangeLog Sun May 27 10:40:55 2012 +0000 +++ b/ChangeLog Fri Jun 01 09:49:07 2012 +0000 @@ -1,3 +1,9 @@ +2012-06-01 Sascha L. Teichmann + + * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: + Remove extra from the XML generated by JSON lists containing only + objects. + 2012-05-27 Ingo Weinzierl Tagged trunk as '2.7' diff -r d5db5483b376 -r cdc8b7c64856 artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java --- a/artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java Sun May 27 10:40:55 2012 +0000 +++ b/artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java Fri Jun 01 09:49:07 2012 +0000 @@ -507,6 +507,14 @@ void add(String key, Object value) { attributes.put(key, value != null ? value.toString() : "null"); } + + int numChildren() { + return children.size(); + } + + Node firstChild() { + return children.get(0); + } } // class BuildResult private static BuildResult recursiveBuild( @@ -516,11 +524,16 @@ BuildResult result = new BuildResult(); for (Object entry: list) { if (entry instanceof Map) { - Element element = document.createElement("map"); BuildResult subResult = recursiveBuild( (Map)entry, document); - subResult.finish(element); - result.add(element); + if (subResult.numChildren() == 1) { + result.add(subResult.firstChild()); + } + else { + Element element = document.createElement("map"); + subResult.finish(element); + result.add(element); + } } else if (entry instanceof List) { Element element = document.createElement("list");