¿Cómo puedo usar el siguiente código para desarmar una cadena XML y asignarla al objeto JAXB a continuación?
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Person person = (Person) unmarshaller.unmarshal("xml string here");
@XmlRootElement(name = "Person")
public class Person {
@XmlElement(name = "First-Name")
String firstName;
@XmlElement(name = "Last-Name")
String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Reader
combinación con una clase de bean específica? Ya que no hayunmarshall(Reader, Class)
método. Por ejemplo, ¿hay alguna manera de convertir elReader
a ajavax.xml.transform.Source
?JAXBElement<MyObject> elemento = (JAXBElement<MyObject>)unmarshaller.unmarshal(reader); MyObject object = elemento.getValue();
javax.xml.transform.stream.StreamSource
que tiene constructores que tomanReader
,File
oInputStream
.O si quieres una línea simple:
fuente
No hay
unmarshal(String)
método Debe usar unReader
:Pero generalmente obtienes esa cadena de algún lugar, por ejemplo, un archivo. Si ese es el caso, mejor pasa el
FileReader
sí mismo.fuente
Si ya tiene el xml y viene con más de un atributo, puede manejarlo de la siguiente manera:
el método getCharacterDataFromElement es
fuente