Java - problemas con JAXB

 
Vista:

problemas con JAXB

Publicado por jotaa (2 intervenciones) el 24/10/2006 13:50:28
Hola!! Estoy utilizando JAXB para hacer el binding de XML Schema a Java. El problema que tengo es que no puedo crear elementos raiz con hijos. Me explico: si creo un elemento raiz con atributos al ejecutar el siguiente codigo no me da ningun problema:

JAXBContext jc = JAXBContext.newInstance("sample");
Unmarshaller um = jc.createUnmarshaller();

SchemaFactory sf = SchemaFactory.newInstance(
javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("sampleSchema.xsd"));

um.setSchema(schema);
um.unmarshal(new FileInputStream("sample.xml"));

El problema viene cuando el elemento raiz tiene elementos hijos: cuando ejecuto el método

um.unmarshal(new FileInputStream("sample.xml"));

me lanza la siguiente Excepcion:

javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.example.org", local:"Raiz"). Expected elements are <{}Raiz>
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at Main.main(Main.java:29)

El XML Schema es:

<?xml version="1.0"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org"
xmlns="http://www.example.org"
elementFormDefault="qualified">

<xsd:element name="Raiz">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Hijo" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="Atributo" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>

y el documento xml es:

<?xml version="1.0"?>
<Raiz Atributo="prueba"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org sampleSchema.xsd"
xmlns="http://www.example.org">
<Hijo>hijo1</Hijo>
</Raiz>

Sabeis a qué se debe esta excepcion?? Cómo podría arreglarlo?? Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:problemas con JAXB

Publicado por Alberto (15 intervenciones) el 26/12/2006 23:43:08
El mundo es un pañuelo, Feliz navidad y supongo que ya estará solucinado :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar