2016-04-26 9 views
1

Ich habe einige .xsd-Dateien von einer anderen Abteilung, die nicht Java verwendet. Ich muss xml schreiben, das dem spezifizierten Format entspricht. Also habe ich sie in Java Klassen jaxb-konvertiert und kann etwas von der XML schreiben. So weit, ist es gut. Aber jetzt enthält eines der Elemente/Klassen eine Eigenschaft, wo du (oder du sollst) xml einfügen kannst. Ich muss dort eines der anderen jaxb-Elemente einfügen.können Sie ein Jaxb-Objekt in org.w3c.dom.Element konvertieren?

in Java, haben wir:

import org.w3c.dom.Element; 
... 
     @XmlAccessorType(XmlAccessType.FIELD) 
     @XmlType(name = "", propOrder = { 
      "any" 
     }) 
     public static class XMLDocument { 

      @XmlAnyElement 
      protected Element any; 

      /** 
      * Gets the value of the any property. 
      * 
      * @return 
      *  possible object is 
      *  {@link Element } 
      *  
      */ 
      public Element getAny() { 
       return any; 
      } 

      /** 
      * Sets the value of the any property. 
      * 
      * @param value 
      *  allowed object is 
      *  {@link Element } 
      *  
      */ 
      public void setAny(Element value) { 
       this.any = value; 
      } 

     } 

Und das Objekt I eingefügt werden soll, ist dieser Klasse:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "contactInfo", 
    ... 
}) 
@XmlRootElement(name = "Letter") 
public class Letter { 

    @XmlElement(name = "ContactInfo", required = true) 
    protected ContactInformationLetter contactInfo; 
    ... 

Ich hatte gehofft, ich etwas tun könnte:

Letter letter = new Letter(); 

XMLDocument xmlDocument = new XMLDocument(); 
xmlDocument.setAny(letter); 

Aber natürlich ist Brief nicht vom Typ "Element".

Antwort

2

Sie müssen marshall es zu einem Dokument, aus dem Sie das Element erhalten können (e):

Letter letter = new Letter(); 

// convert to DOM document 
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); 
JAXBContext context = JAXBContext.newInstance(Letter.class.getPackage().getName()); 
Marshaller marshaller = context.createMarshaller(); 

XMLDocument xmlDocument = new XMLDocument(); 
xmlDocument.setAny(document.getDocumentElement()); 

Referenz: how to marshal a JAXB object to org.w3c.dom.Document?

Verwandte Themen