Как я могу использовать приведенный ниже код для демонтажа строки XML и сопоставления ее с объектом JAXB ниже?
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
в сочетании с определенным классом бобов? Так как нетunmarshall(Reader, Class)
метода. Например , есть ли способ , чтобы преобразоватьReader
кjavax.xml.transform.Source
?JAXBElement<MyObject> elemento = (JAXBElement<MyObject>)unmarshaller.unmarshal(reader); MyObject object = elemento.getValue();
javax.xml.transform.stream.StreamSource
который имеет конструктор , которые принимаютReader
,File
илиInputStream
.Или, если вы хотите простой однострочник:
источник
Там нет
unmarshal(String)
метода. Вы должны использоватьReader
:Но обычно вы получаете эту строку откуда-то, например, файл. Если это так, лучше сдай
FileReader
сам.источник
Если у вас уже есть xml и имеется более одного атрибута, вы можете обработать его следующим образом:
метод getCharacterDataFromElement является
источник