Bagaimana saya bisa menggunakan kode di bawah ini untuk menghapus string XML dan memetakannya ke objek JAXB di bawah ini?
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
kombinasi dengan kelas kacang tertentu? Karena tidak adaunmarshall(Reader, Class)
metode. Misalnya apakah ada cara untuk mengonversiReader
kejavax.xml.transform.Source
?JAXBElement<MyObject> elemento = (JAXBElement<MyObject>)unmarshaller.unmarshal(reader); MyObject object = elemento.getValue();
javax.xml.transform.stream.StreamSource
yang memiliki konstruktor yang mengambilReader
,File
atauInputStream
.Atau jika Anda menginginkan one-liner sederhana:
sumber
Tidak ada
unmarshal(String)
metode. Anda harus menggunakanReader
:Tetapi biasanya Anda mendapatkan string itu dari suatu tempat, misalnya file. Jika itu masalahnya, lebih baik lewati saja
FileReader
.sumber
Jika Anda sudah memiliki xml, dan datang lebih dari satu atribut, Anda dapat menanganinya sebagai berikut:
metode getCharacterDataFromElement adalah
sumber