¡Saludos! Tengo un servidor de contenido XML de regresar a mi cliente que tiene este aspecto:JAXB para unmarshall <string> foobar</string>
<string xmlns="...">foobar</string>
Soy nuevo en JAXB y han recibido una gran cantidad de cosas de trabajo, excepto esto. Pensé que sería bastante fácil reunir y desmantelar esto hacia y desde una Cadena. Me tomó un tiempo, pero al final me di cuenta de cómo calcular esto como
public static String ToXML(String s) throws Exception
{
JAXBContext context = JAXBContext.newInstance(String.class);
Marshaller marshaller = context.createMarshaller();
StringWriter sw = new StringWriter();
marshaller.marshal(new JAXBElement(new QName("", "String"), String.class, s), sw);
return sw.toString();
}
Así que mi pregunta es, ¿cómo me unmarshal esto? No puede ser anotado como un elemento raíz. No puedo usar java.lang como el paquete para crear una nueva instancia de un JAXBContext (recibo una excepción que falta en ObjectFactory).
¿Alguna sabiduría para impartir? Esto no puede ser tan difícil, ¿verdad?
Un esquema XML es totalmente opcional con JAXB. Es perfectamente aceptable anotar a mano su propio modelo de objetos. – skaffman
Es cierto, pero tener un conjunto de objetos generado por el esquema asegura la corrección en el documento (el documento se puede validar contra el esquema) y los objetos de Java (es fácil pasar por alto un campo). Puede repetir el proceso en múltiples aplicaciones y máquinas también. –