Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.fasterxml.jackson.module.jaxb.deser;
  
  import java.util.Iterator;
  
  
 
 

Author(s):
Ryan Heaton
 
     extends StdDeserializer<Element>
 {
     private final DocumentBuilder builder;
 
     public DomElementJsonDeserializer()
     {
         super(Element.class);
         try {
             DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
             bf.setNamespaceAware(true);
              = bf.newDocumentBuilder();
         } catch (ParserConfigurationException e) {
             throw new RuntimeException();
         }
     }
 
     public DomElementJsonDeserializer(DocumentBuilder builder)
     {
         super(Element.class);
         this. = builder;
     }
 
     @Override
     public Element deserialize(JsonParser jpDeserializationContext ctxt)
         throws IOExceptionJsonProcessingException
     {
         Document document = .newDocument();
         JsonNode root = jp.readValueAsTree();
         return fromNode(documentroot);
     }
 
     protected Element fromNode(Document documentJsonNode jsonNode)
             throws IOException
     {
         String ns = jsonNode.get("namespace") != null ? jsonNode.get("namespace").asText() : null;
         String name = jsonNode.get("name") != null ? jsonNode.get("name").asText() : null;
         if (name == null) {
             throw new JsonMappingException("No name for DOM element was provided in the JSON object.");
         }
         Element element = document.createElementNS(nsname);
 
         JsonNode attributesNode = jsonNode.get("attributes");
         if (attributesNode != null && attributesNode instanceof ArrayNode) {
             Iterator<JsonNodeatts = attributesNode.elements();
             while (atts.hasNext()) {
                 JsonNode node = atts.next();
                 ns = node.get("namespace") != null ? node.get("namespace").asText() : null;
                 name = node.get("name") != null ? node.get("name").asText() : null;
                 String value = node.get("$") != null ? node.get("$").asText() : null;
 
                 if (name != null) {
                     element.setAttributeNS(nsnamevalue);
                 }
             }
         }
 
         JsonNode childsNode = jsonNode.get("children");
         if (childsNode != null && childsNode instanceof ArrayNode) {
             Iterator<JsonNodeels = childsNode.elements();
             while (els.hasNext()) {
                 JsonNode node = els.next();
                 name = node.get("name") != null ? node.get("name").asText() : null;
                 String value = node.get("$") != null ? node.get("$").asText() : null;
 
                 if (value != null) {
                     element.appendChild(document.createTextNode(value));
                 }
                 else if (name != null) {
                     element.appendChild(fromNode(documentnode));
                 }
             }
         }
 
         return element;
     }
New to GrepCode? Check out our FAQ X