2014-10-02 24 views
6

“java.lang.String” türü sıralamakta yapamaz:Sorunları - Ben aşağıdaki hatayı alıyorum mareşal işlemini çalıştırdığınızda

javax.xml.bind.MarshalException 
- with linked exception: 
[com.sun.istack.internal.SAXException2: unable to marshal type "java.lang.String" as an element because it is missing an @XmlRootElement annotation] 
    ... 

Caused by: com.sun.istack.internal.SAXException2: unable to marshal type "java.lang.String" as an element because it is missing an @XmlRootElement annotation 
    at com.sun.xml.internal.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:237) 
    at com.sun.xml.internal.bind.v2.runtime.LeafBeanInfoImpl.serializeRoot(LeafBeanInfoImpl.java:126) 
    at com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:483) 
    at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:308) 
    ... 6 more 

Bu manevra ...

benim fonksiyondur ilgi alanlarınıza
public StringBuffer Marshaller(Object marshall){ // make marshalling->Java to XML 
     StringWriter writer = new StringWriter(); 
     try { 
      JAXBContext jaxbContext=JAXBContext.newInstance(marshall.getClass()); 
      Marshaller jaxbMarshaller=jaxbContext.createMarshaller(); 
      // çıktı 
      jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
      jaxbMarshaller.marshal(marshall, writer); 
      System.out.println(writer.getBuffer().toString()); 
     } catch (PropertyException e) { 
      e.printStackTrace(); 
     } catch (JAXBException e) { 
      e.printStackTrace(); 
     } 
     return writer.getBuffer(); 

    } 

Teşekkür ..

cevap

9

herhangi kök öğesi bilgilerini (eksik hakkında dolayısıyla istisna yok gibi sadece bir String sıralanamıyorek açıklama), ancak JAXBElement bir örneğine sarın ve sonra bunu mareşalın. JAXBElement, bu kök öğesi bilgilerini JAXB'ye sağlamanın başka bir yoludur. Bir XML Şeması adresinin nesne modeli oluşturduk Eğer bir XML Şeması

itibaren sizin Modeli Oluşturulan Eğer JAXBElement

JAXBElement<String> jaxbElement = 
    new JAXBElement(new QName("root-element"), 
    String.class, string); 

Oluşturma

örneği. Ve xs:string gibi bir veri türü olan üst düzey bir XML öğeniz var, o zaman oluşturulan ObjectFactory sınıfında JAXBElement örneğini oluşturmanıza yardımcı olacak bir kolaylık yöntemi olacaktır.

+0

Daha fazla bilgi verir misiniz? –

+0

@nurdankaraman - Cevabım için bazı ek bilgiler ekledim. –

+0

Çok teşekkür ederim :) –

İlgili konular