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);

http://dive4elements.wald.intevation.org