Comment puis-je utiliser le code ci-dessous pour démarseler une chaîne XML et la mapper à l'objet JAXB ci-dessous?
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
en combinaison avec une classe de haricots spécifique? Puisqu'il n'y a pas deunmarshall(Reader, Class)
méthode. Existe-t-il par exemple un moyen de convertir leReader
en unjavax.xml.transform.Source
?JAXBElement<MyObject> elemento = (JAXBElement<MyObject>)unmarshaller.unmarshal(reader); MyObject object = elemento.getValue();
javax.xml.transform.stream.StreamSource
qui a des constructeurs qui prennentReader
,File
ouInputStream
.Ou si vous voulez un simple one-liner:
la source
Il n'y a pas de
unmarshal(String)
méthode. Vous devez utiliser unReader
:Mais généralement, vous obtenez cette chaîne de quelque part, par exemple un fichier. Si tel est le cas, mieux vaut passer le
FileReader
lui - même.la source
Si vous avez déjà le xml et que plusieurs attributs sont fournis, vous pouvez le gérer comme suit:
la méthode getCharacterDataFromElement est
la source