comparison artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java @ 384:823752e3d392

Fixed building XML documents from JSON strings. artifacts/trunk@4321 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 27 Apr 2012 10:56:38 +0000
parents bed51de8ae58
children 111d4e28c45e
comparison
equal deleted inserted replaced
383:b076c9e9fdfd 384:823752e3d392
479 void setAttributes(Element element) { 479 void setAttributes(Element element) {
480 for (Map.Entry<String, String> entry: attributes.entrySet()) { 480 for (Map.Entry<String, String> entry: attributes.entrySet()) {
481 element.setAttribute(entry.getKey(), entry.getValue()); 481 element.setAttribute(entry.getKey(), entry.getValue());
482 } 482 }
483 } 483 }
484
485 void finish(Element element) {
486 setAttributes(element);
487 for (Node child: children) {
488 element.appendChild(child);
489 }
490 }
491
484 void add(Node node) { 492 void add(Node node) {
485 children.add(node); 493 children.add(node);
486 } 494 }
487 495
488 void add(String key, Object value) { 496 void add(String key, Object value) {
498 for (Object entry: list) { 506 for (Object entry: list) {
499 if (entry instanceof Map) { 507 if (entry instanceof Map) {
500 Element element = document.createElement("map"); 508 Element element = document.createElement("map");
501 BuildResult subResult = recursiveBuild( 509 BuildResult subResult = recursiveBuild(
502 (Map<String, Object>)entry, document); 510 (Map<String, Object>)entry, document);
503 subResult.setAttributes(element); 511 subResult.finish(element);
504 result.add(element); 512 result.add(element);
505 } 513 }
506 else if (entry instanceof List) { 514 else if (entry instanceof List) {
507 Element element = document.createElement("list"); 515 Element element = document.createElement("list");
508 BuildResult subResult = recursiveBuild((List)entry, document); 516 BuildResult subResult = recursiveBuild((List)entry, document);
509 subResult.setAttributes(element); 517 subResult.finish(element);
510 result.add(element); 518 result.add(element);
511 } 519 }
512 else { 520 else {
513 Element element = document.createElement("entry"); 521 Element element = document.createElement("entry");
514 element.setAttribute( 522 element.setAttribute(
530 Object value = entry.getValue(); 538 Object value = entry.getValue();
531 if (value instanceof Map) { 539 if (value instanceof Map) {
532 Element element = document.createElement(entry.getKey()); 540 Element element = document.createElement(entry.getKey());
533 BuildResult subResult = recursiveBuild( 541 BuildResult subResult = recursiveBuild(
534 (Map<String, Object>)value, document); 542 (Map<String, Object>)value, document);
535 subResult.setAttributes(element); 543 subResult.finish(element);
536 result.add(element); 544 result.add(element);
537 } 545 }
538 else if (value instanceof List) { 546 else if (value instanceof List) {
539 Element element = document.createElement(entry.getKey()); 547 Element element = document.createElement(entry.getKey());
540 BuildResult subResult = recursiveBuild((List)value, document); 548 BuildResult subResult = recursiveBuild((List)value, document);
541 subResult.setAttributes(element); 549 subResult.finish(element);
542 result.add(element); 550 result.add(element);
543 } 551 }
544 else { 552 else {
545 result.add(entry.getKey(), value); 553 result.add(entry.getKey(), value);
546 } 554 }

http://dive4elements.wald.intevation.org