Mercurial > dive4elements > framework
comparison 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 |
comparison
equal
deleted
inserted
replaced
390:d5db5483b376 | 392:cdc8b7c64856 |
---|---|
505 } | 505 } |
506 | 506 |
507 void add(String key, Object value) { | 507 void add(String key, Object value) { |
508 attributes.put(key, value != null ? value.toString() : "null"); | 508 attributes.put(key, value != null ? value.toString() : "null"); |
509 } | 509 } |
510 | |
511 int numChildren() { | |
512 return children.size(); | |
513 } | |
514 | |
515 Node firstChild() { | |
516 return children.get(0); | |
517 } | |
510 } // class BuildResult | 518 } // class BuildResult |
511 | 519 |
512 private static BuildResult recursiveBuild( | 520 private static BuildResult recursiveBuild( |
513 List list, | 521 List list, |
514 Document document | 522 Document document |
515 ) { | 523 ) { |
516 BuildResult result = new BuildResult(); | 524 BuildResult result = new BuildResult(); |
517 for (Object entry: list) { | 525 for (Object entry: list) { |
518 if (entry instanceof Map) { | 526 if (entry instanceof Map) { |
519 Element element = document.createElement("map"); | |
520 BuildResult subResult = recursiveBuild( | 527 BuildResult subResult = recursiveBuild( |
521 (Map<String, Object>)entry, document); | 528 (Map<String, Object>)entry, document); |
522 subResult.finish(element); | 529 if (subResult.numChildren() == 1) { |
523 result.add(element); | 530 result.add(subResult.firstChild()); |
531 } | |
532 else { | |
533 Element element = document.createElement("map"); | |
534 subResult.finish(element); | |
535 result.add(element); | |
536 } | |
524 } | 537 } |
525 else if (entry instanceof List) { | 538 else if (entry instanceof List) { |
526 Element element = document.createElement("list"); | 539 Element element = document.createElement("list"); |
527 BuildResult subResult = recursiveBuild((List)entry, document); | 540 BuildResult subResult = recursiveBuild((List)entry, document); |
528 subResult.finish(element); | 541 subResult.finish(element); |