convertir xml en objet java à l'aide de jaxb (unmarshal)
J'ai le code XML suivant et j'ai besoin de le convertir en un objet java.
<tests>
<test-data>
<title>BookTitle</title>
<book>BookName</book>
<count>64018</count>
<test-data>
<title>Book title1</title>
<book>Book Name1</book>
<count>5</count>
</test-data>
<test-data>
<title>Book title2</title>
<book>Book Name3</book>
<count>5</count>
</test-data>
<test-data>
<title>Book title3</title>
<book>Book Name3</book>
<count>4</count>
</test-data>
</test-data>
</tests>
Je ne suis pas sûr de ce que sera mon pojo lorsque j'utilise JAXB pour le convertir.
J'ai créé le Pojo selon ma compréhension:
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;
}
}
S'il vous plaît aider moi.
Merci à l'avance.
- Vous n'êtes pas sûr, ok. Mais avez-vous essayé quelque chose? Il est plus facile de vous aider si vous avez quelque chose de déjà fait.
- Si vous avez XSD pour ce XML, vous pouvez générer JAXB classes annotées avec les Ide comme Eclipse.
Vous devez vous connecter pour publier un commentaire.
Tests
Sur le
Tests
classe, nous allons ajouter un@XmlRootElement
annotation. En faisant cela, vous laissez votre JAXB de mise en œuvre de savoir que lorsqu'un document commence avec cet élément que l'on doit instancier cette classe. JAXB est la configuration par exception, cela signifie que vous avez seulement besoin d'ajouter des annotations où votre cartographie diffère de la valeur par défaut. Depuis letestData
propriété diffère de la correspondance par défaut, nous allons utiliser le@XmlElement
annotation. Vous pouvez trouver le tutoriel suivant utiles: http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStartedTestData
Sur cette classe, j'ai utilisé le
@XmlType
annotation pour spécifier l'ordre dans lequel les éléments doivent être commandés à l'. J'ai ajouté untestData
propriété qui semblaient manquer. J'ai aussi utilisé un@XmlElement
annotation pour la même raison que dans leTests
classe.Démo
Ci-dessous est un exemple d'utilisation de l'Api JAXB à lire (unmarshal) le XML et de remplir votre modèle de domaine, puis d'écrire (maréchal) le résultat en XML.