конвертировать xml в java-объект с помощью jaxb (unmarshal)

У меня есть следующий XML и мне нужно преобразовать его в объект java.

  BookTitle BookName 64018  Book title1 Book Name1 5   Book title2 Book Name3 5   Book title3 Book Name3 4    

Я не уверен, каким будет мое pojo, когда я использую JAXB для его преобразования.

По моим соображениям я создал следующие POJO:

 public class Tests { TestData testData; public TestData getTestData() { return testData; } public void setTestData(TestData testData) { this.testData = testData; } } public class TestData { String title; String book; String count; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getBook() { return book; } public void setBook(String book) { this.book = book; } public String getCount() { return count; } public void setCount(String count) { this.count = count; } } 

Пожалуйста, помогите мне. Заранее спасибо.

тесты

В classе « Tests » мы добавим аннотацию @XmlRootElement . Выполнение этого позволит вашей реализации JAXB знать, что когда документ начинается с этого элемента, он должен создать экземпляр этого classа. JAXB – это конфигурация по исключению, это означает, что вам нужно добавлять примечания, где ваше сопоставление отличается от значения по умолчанию. Поскольку свойство testData отличается от сопоставления по умолчанию, мы будем использовать аннотацию @XmlElement . Вы можете найти следующее руководство: http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted

 package forum11221136; import javax.xml.bind.annotation.*; @XmlRootElement public class Tests { TestData testData; @XmlElement(name="test-data") public TestData getTestData() { return testData; } public void setTestData(TestData testData) { this.testData = testData; } } 

TestData

В этом classе я использовал аннотацию @XmlType чтобы указать порядок, в котором должны быть упорядочены элементы. Я добавил свойство testData которое, как оказалось, отсутствует. Я также использовал аннотацию @XmlElement по той же причине, что и в classе Tests .

 package forum11221136; import java.util.List; import javax.xml.bind.annotation.*; @XmlType(propOrder={"title", "book", "count", "testData"}) public class TestData { String title; String book; String count; List testData; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getBook() { return book; } public void setBook(String book) { this.book = book; } public String getCount() { return count; } public void setCount(String count) { this.count = count; } @XmlElement(name="test-data") public List getTestData() { return testData; } public void setTestData(List testData) { this.testData = testData; } } 

демонстрация

Ниже приведен пример использования API-интерфейсов JAXB для чтения (без подбора) XML и заполнения вашей модели домена, а затем записи (маршал) результата обратно в XML.

 package forum11221136; import java.io.File; import javax.xml.bind.*; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Tests.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); File xml = new File("src/forum11221136/input.xml"); Tests tests = (Tests) unmarshaller.unmarshal(xml); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(tests, System.out); } } 
  • Динамические имена тегов с помощью JAXB
  • JAXB отфильтровал parsing
  • Как генерировать аннотацию XMLElementWrapper с помощью xjc и настраиваемой привязки
  • Различия в плагинах Maven JAXB
  • Исключение JAXB: class, не известный этому контексту
  • Как сгенерировать блок CDATA с помощью JAXB?
  • Как представить пустое значение как пустой элемент с помощью JAXB?
  • Можно ли генерировать XSD из JAXB-аннотированного classа?
  • Как создавать classы JAXB только из XML
  • Как вы определяете формат даты, используемый при маршалах JAXB xsd: dateTime?
  • Как проверить схему в JAXB 2.0 без сортировки?
  • Давайте будем гением компьютера.