2016-04-26 11 views
1

Javaを使用しない別の部門からいくつかの.xsdファイルが取得されました。私は指定されたフォーマットに対応するxmlを書く必要があります。だから私はjaxbをJavaクラスに変換し、XMLのいくつかを書くことができます。ここまでは順調ですね。しかし、要素/クラスの1つに、xmlを挿入できるプロパティが含まれています。そこに他のjaxb要素の1つを挿入する必要があります。 Javaでjaxbオブジェクトをorg.w3c.dom.Elementに変換できますか?

、我々は持っている:

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

     } 

そして、私は挿入するオブジェクト、このクラスは次のとおりです。

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

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

私はこのような何か行うことができます願っていた。

Letter letter = new Letter(); 

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

もちろん、文字は「要素」タイプではありません。

答えて

2

あなた必要マーシャルそれあなたが要素を取得することができ、そこからドキュメント、(複数の):

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

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

関連する問題