powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Запустить пример JAXB...
3 сообщений из 3, страница 1 из 1
Запустить пример JAXB...
    #33800638
mors78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
 public   class  TestJAXB {

     public   static   void  main(String[] in){
         new  TestJAXB();
    }

     public  TestJAXB() {
         try  {
            DocumentBuilderFactory  docBuidFact = DocumentBuilderFactory.newInstance();
            Document newDocument = docBuidFact.newDocumentBuilder().newDocument();
            MyObject myObject = getMyObject();            
            JAXBContext context =
                    JAXBContext.newInstance( MyObject. class .getPackage().getName());
            Marshaller marshaller = context.createMarshaller();
            marshaller.marshal(myObject, newDocument);
            saveToFile("file.xml", newDocument);
        }  catch  (Exception ex) {
            ex.printStackTrace();
        }
    }

     private  MyObject getMyObject() {
        MyObject myObject =  new  MyObject();
        myObject.setPk("this PK");
         return  myObject;
    }

     public   static   boolean  saveToFile(String fileName, Document doc){
         try  {
            ByteArrayOutputStream ser = getByteOutputStream(doc);
            DataOutputStream out2 =
                     new  DataOutputStream(
                             new  BufferedOutputStream(
                                     new  FileOutputStream(fileName)));

             byte [] buffer = ser.toByteArray();
            out2.write(buffer);
            out2.close();
             return  true;
        }  catch  (Exception ex) {
            ex.printStackTrace();
             return  false;
        }
    }

     private   static  ByteArrayOutputStream getByteOutputStream(Document xmlResult)  throws 
        TransformerFactoryConfigurationError {
      ByteArrayOutputStream ser =  new  ByteArrayOutputStream();
       try  {
        org.apache.xml.serialize.OutputFormat format =
             new  org.apache.xml.serialize.OutputFormat(org.apache.xml.serialize.Method.XML, "Windows-1251", true );
        org.apache.xml.serialize.XMLSerializer serializer =
             new  org.apache.xml.serialize.XMLSerializer(ser,format);
        serializer.serialize(xmlResult);
      }

       catch  (Exception ex1) {
        ex1.printStackTrace();
      }
       return  ser;
    }
}


 public   class  MyObject {
    
     private  String pk;

     public  MyObject() {
    }

     public   void  setPk(String pk) {
         this .pk = pk;
    }

     public  String getPk() {
         return  pk;
    }
}


Пишет:

javax.xml.bind.JAXBException: test.MyObject nor any of its super class is known to this context at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:474)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:448)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:292)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:221)
at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:91)
at ru.rtk.ipds.reports.reportscallsvolume.test.TestJAXB.<init>(TestJAXB.java:44)
at ru.rtk.ipds.reports.reportscallsvolume.test.TestJAXB.main(TestJAXB.java:31)

Чего то уже башка не варит, не пойму, может какие анотации в MyObject написать ...
...
Рейтинг: 0 / 0
Запустить пример JAXB...
    #33807591
mors78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример от SUN Using JAXB 2.0 to persist your own classes to XML
Не работает :( :
javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: unable to marshal type "test.MyObject" as an element because it is missing an @XmlRootElement annotation]

at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:295)

at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:221)

at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:70)

at ru.rtk.ipds.reports.reportscallsvolume.test.TestJAXB.<init>(TestJAXB.java:30)

at ru.rtk.ipds.reports.reportscallsvolume.test.TestJAXB.main(TestJAXB.java:22)

src
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 public   class  TestJAXB {

 public   static   void  main(String[] in){
 new  TestJAXB();
}

 public  TestJAXB() {
 try  {
MyObject myObject = getMyObject();
JAXBContext context =
JAXBContext.newInstance(MyObject. class );
context.createMarshaller().marshal(myObject, System.out);
}  catch  (Exception ex) {
ex.printStackTrace();
}
}

 private  MyObject getMyObject() {
MyObject myObject =  new  MyObject();
myObject.setPk("this PK");
 return  myObject;
}

}

 package  test;

 import  javax.xml.bind.annotation.*;

@XmlRootElement
 public   class  MyObject {
 private  String pk;
 public  MyObject() { }

 public   void  setPk(String pk) {
 this .pk = pk;
}
 public  String getPk() {
 return  pk;
}
}
...
Рейтинг: 0 / 0
Запустить пример JAXB...
    #33809757
mors78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коварный JBuilder виноват, все работает, обязательно нужны все jar JAXB 2.0 (activation.jar, jaxb-api.jar, jaxb-impl.jar, jaxb-xjc.jar, jsr173-api.jar)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Запустить пример JAXB...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]