JAXB use String as it is

前端 未结 2 1115
难免孤独
难免孤独 2020-12-01 22:40

I use REST and i was wondering if i can tell jaxb to insert a string field \"as-it-is\" into the outgoing xml. Certainly i count unpack it before returning, but i would lik

2条回答
  •  被撕碎了的回忆
    2020-12-01 22:46

    You can use the @XmlAnyElement and specify a DomHandler to keep a portion of the XML document as a String.

    Customer

    import javax.xml.bind.annotation.*;
    
    @XmlRootElement
    public class Customer {
    
        private String bio;
    
        @XmlAnyElement(BioHandler.class)
        public String getBio() {
            return bio;
        }
    
        public void setBio(String bio) {
            this.bio = bio;
        }
    
    }
    

    BioHandler

    import java.io.*;
    import javax.xml.bind.ValidationEventHandler;
    import javax.xml.bind.annotation.DomHandler;
    import javax.xml.transform.Source;
    import javax.xml.transform.stream.*;
    
    public class BioHandler implements DomHandler {
    
        private static final String BIO_START_TAG = "";
        private static final String BIO_END_TAG = "";
    
        private StringWriter xmlWriter = new StringWriter();
    
        public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) {
            return new StreamResult(xmlWriter);
        }
    
        public String getElement(StreamResult rt) {
            String xml = rt.getWriter().toString();
            int beginIndex = xml.indexOf(BIO_START_TAG) + BIO_START_TAG.length();
            int endIndex = xml.indexOf(BIO_END_TAG);
            return xml.substring(beginIndex, endIndex);
        }
    
        public Source marshal(String n, ValidationEventHandler errorHandler) {
            try {
                String xml = BIO_START_TAG + n.trim() + BIO_END_TAG;
                StringReader xmlReader = new StringReader(xml);
                return new StreamSource(xmlReader);
            } catch(Exception e) {
                throw new RuntimeException(e);
            }
        }
    
    }
    

    For More Information

    • http://blog.bdoughan.com/2011/04/xmlanyelement-and-non-dom-properties.html

提交回复
热议问题