Tôi đang cố gắng sắp xếp một tập tin bằng cách sử dụng Visio XML Schema, trong đó bao gồm 3 file schema và tạo ra ba gói khi nguồn java được tạo ra với XJC:JAXB bị nhầm lẫn về các phần tử gốc?
- com.microsoft.schemas.visio._2003.core
- com.microsoft.schemas.visio._2006.extension
- com.microsoft.schemas.office.visio._2010.extension
phần tử gốc là VisioDocument
, và tất cả các lớp học tôi đang sử dụng nằm trong sốGói.
Đây là cách tiếp cận của tôi để marshalling tập tin XML của tôi:
VisioDocumentType visioDoc = new VisioDocumentType();
... manipulated here ...
JAXBContext jc = JAXBContext.newInstance("com.microsoft.schemas.visio._2003.core");
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(new JAXBElement<VisioDocumentType>(new QName("uri","local"), VisioDocumentType.class, visioDoc), bw);
Khi thực hiện, tôi nhận được lỗi này:
javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.internal.SAXException2: unable to marshal type "com.microsoft.schemas.visio._2003.core.PagePropsType" as an element because it is missing an @XmlRootElement annotation]
Tôi đang sử dụng PagePropsType
, nhưng nó không phải là một phần tử gốc. Tại sao JAXB lại nghĩ như vậy?
Làm thế nào là tài sản mà bạn đang thiết lập các ví dụ của 'com.microsoft.schemas.visio._2003.core.PagePropsType' trên chú thích ? –
'@XmlAccessorType (XmlAccessType.FIELD) @XmlType (name = "PageProps_Type", propOrder = { "pageWidthOrPageHeightOrShdwOffsetX" }) 'Đó có phải là những gì bạn đang tìm kiếm không? – Chris
Tôi có nghĩa là tài sản bạn đang thiết lập dụ lên và không phải là 'PagePropsType' chính nó. –