Wie kann ich den folgenden Code verwenden, um eine XML-Zeichenfolge zu entfernen und sie dem unten stehenden JAXB-Objekt zuzuordnen?
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
in Kombination mit einer bestimmten Bohnenklasse verwenden möchten? Da gibt es keineunmarshall(Reader, Class)
Methode. Gibt es zB eine Möglichkeit, dasReader
in ein umzuwandelnjavax.xml.transform.Source
?JAXBElement<MyObject> elemento = (JAXBElement<MyObject>)unmarshaller.unmarshal(reader); MyObject object = elemento.getValue();
javax.xml.transform.stream.StreamSource
welche KonstruktorenReader
habenFile
, oderInputStream
.Oder wenn Sie einen einfachen Einzeiler wollen:
quelle
Es gibt keine
unmarshal(String)
Methode. Sie sollten Folgendes verwendenReader
:Aber normalerweise erhalten Sie diese Zeichenfolge von irgendwoher, zum Beispiel aus einer Datei. Wenn das der Fall ist, geben Sie es besser
FileReader
selbst weiter.quelle
Wenn Sie bereits über die XML-Datei verfügen und mehr als ein Attribut haben, können Sie damit wie folgt umgehen:
Die Methode getCharacterDataFromElement lautet
quelle