Mercurial > dive4elements > framework
diff artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java @ 392:cdc8b7c64856
JSON2XML: Remove extra <map></map> from the XML generated by JSON lists containing only
objects.
artifacts/trunk@4566 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 01 Jun 2012 09:49:07 +0000 |
parents | 111d4e28c45e |
children |
line wrap: on
line diff
--- 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<String, Object>)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");