Jak mogę użyć poniższego kodu, aby usunąć ciąg XML z kodu XML i zamapować go na obiekt JAXB poniżej?
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
kombinacji z określoną klasą fasoli? Ponieważ nie maunmarshall(Reader, Class)
metody. Na przykład czy jest jakiś sposób, aby przekonwertowaćReader
dojavax.xml.transform.Source
?JAXBElement<MyObject> elemento = (JAXBElement<MyObject>)unmarshaller.unmarshal(reader); MyObject object = elemento.getValue();
javax.xml.transform.stream.StreamSource
która ma konstruktorów, które mająReader
,File
lubInputStream
.Lub jeśli chcesz prosty, jednoliniowy:
źródło
Nie ma
unmarshal(String)
metody. Powinieneś użyćReader
:Ale zwykle otrzymujesz ten ciąg skądś, na przykład plik. Jeśli tak jest, lepiej podaj
FileReader
samo.źródło
Jeśli masz już xml i masz więcej niż jeden atrybut, możesz to zrobić w następujący sposób:
metoda getCharacterDataFromElement to
źródło