Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Запустить пример JAXB... / 3 сообщений из 3, страница 1 из 1
19.06.2006, 17:24
    #33800638
mors78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запустить пример JAXB...
Код: 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
22.06.2006, 09:37
    #33807591
mors78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запустить пример JAXB...
Пример от 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
22.06.2006, 18:01
    #33809757
mors78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запустить пример JAXB...
Коварный JBuilder виноват, все работает, обязательно нужны все jar JAXB 2.0 (activation.jar, jaxb-api.jar, jaxb-impl.jar, jaxb-xjc.jar, jsr173-api.jar)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Запустить пример JAXB... / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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