Sto cercando di schierare un file utilizzando il Visio XML Schema, che si compone di 3 file di schema e produce tre pacchetti quando la sorgente di Java è generato con XJC:JAXB è confuso sugli elementi root?
- com.microsoft.schemas.visio._2003.core
- com.microsoft.schemas.visio._2006.extension
- com.microsoft.schemas.office.visio._2010.extension
L'elemento principale è VisioDocument
, e tutte le classi sto usando sono nelloPacchetto.
Ecco il mio approccio per il dispiegamento di mio file XML:
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);
Quando viene eseguito, ricevo questo errore:
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]
Sto usando PagePropsType
, ma non è un elemento radice. Perché JAXB pensa che sia?
Come è la proprietà che si sta configurando l'istanza di 'com.microsoft.schemas.visio._2003.core.PagePropsType' sul annotato ? –
'@XmlAccessorType (XmlAccessType.CAMPO) @XmlType (name = "PageProps_Type", propOrder = { "pageWidthOrPageHeightOrShdwOffsetX" }) "È quello che stai cercando? – Chris
Intendevo la proprietà su cui si sta impostando l'istanza e non il 'PagePropsType' stesso. –