


Java&Xml-Tutorial (11) JAXB implementiert die XML- und Java-Objektkonvertierung
JAXB ist die Abkürzung für Java Architecture for XML Binding, die zum Erstellen einer Zuordnung zwischen Java-Klassen und XML verwendet wird und Entwicklern dabei helfen kann, XML- und Java-Objekte einfach ineinander zu konvertieren.
In diesem Artikel wird anhand eines einfachen Beispiels die Verwendung von JAXB vorgestellt. Zunächst müssen wir die häufig verwendeten APIs von JAXB verstehen.
Die Klasse JAXBContext ist der Einstiegspunkt der Anwendung und wird zum Verwalten von XML/Java-Bindungsinformationen verwendet.
Marshaller-Schnittstelle, serialisiert Java-Objekte in XML-Daten.
Unmarshaller-Schnittstelle, deserialisiert XML-Daten in Java-Objekte.
@XmlType, ordnet Java-Klassen oder Aufzählungstypen XML-Schematypen zu
@XmlAccessorType(XmlAccessType.FIELD), Steuerfelder oder Serialisierung von Eigenschaften. FIELD bedeutet, dass JAXB automatisch jedes nicht statische (statische), nicht transiente (durch @XmlTransient markierte) Feld in der Java-Klasse an XML bindet. Andere Werte sind XmlAccessType.PROPERTY und XmlAccessType.NONE.
@XmlAccessorOrder, steuert die Reihenfolge von Eigenschaften und Feldern in JAXB-Bindungsklassen
@XmlJavaTypeAdapter, verwendet einen angepassten Adapter (d. h. erweitert die abstrakte Klasse). XmlAdapter und überschreiben Sie die Methoden „marshal()“ und „unmarshal()“, um Java-Klassen in XML zu serialisieren.
@XmlElementWrapper generiert für ein Array oder eine Sammlung (d. h. eine Mitgliedsvariable, die mehrere Elemente enthält) ein XML-Element (Wrapper genannt), das das Array oder die Sammlung umschließt.
@XmlRootElement, ordnet Java-Klassen oder Aufzählungstypen XML-Elementen zu.
@XmlElement, ordnet ein Attribut einer Java-Klasse einem XML-Element mit demselben Namen wie das Attribut zu.
@XmlAttribute, ordnet ein Attribut einer Java-Klasse einem XML-Attribut mit demselben Namen wie das Attribut zu.
Der Inhalt der Java Bean, die wir binden müssen, ist wie folgt:
Employee.java
package net.csdn.beans; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement @XmlType(name = "Employee", propOrder = { "name", "age", "role", "gender" }) public class Employee { private String name; private String gender; private int age; private String role; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } @Override public String toString() { return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender + " Role=" + this.role; } }
Der Inhalt der XML-Datei, die wir binden müssen in ein Java-Objekt umgewandelt werden soll, lautet wie folgt:
employee.xml
<?xml version="1.0"?><employee id="1"> <name>Pankaj</name> <age>29</age> <role>Java Developer</role> <gender>Male</gender></employee>
Als nächstes schreiben Sie den Testfallcode:
TestJAXB.java
package net.csdn.test; import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import net.csdn.beans.Employee; import org.junit.Test;public class TestJAXB { @Test public void testXml2Obj() throws Exception { InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("employee.xml"); byte[] bytes = new byte[is.available()]; is.read(bytes); String xmlStr = new String(bytes); JAXBContext context = JAXBContext.newInstance(Employee.class); Unmarshaller unmarshaller = context.createUnmarshaller(); Employee emp = (Employee) unmarshaller.unmarshal(new StringReader(xmlStr)); System.out.println(emp); } @Test public void testObj2Xml() { Employee emp = new Employee(); emp.setAge(10); emp.setGender("Male"); emp.setName("Jane"); emp.setRole("Teacher"); String xmlStr = TestJAXB.convertToXml(emp,"utf-8"); System.out.println(xmlStr); } public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); result = writer.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } }
Führen Sie testObj2Xml aus Testmethode, Konsolenausgabe:
<?xml version="1.0" encoding="utf-8" standalone="yes"?><employee> <name>Jane</name> <age>10</age> <role>Teacher</role> <gender>Male</gender></employee>
Führen Sie die testXml2Obj-Testmethode aus, Konsolenausgabe:
Employee:: Name=Pankaj Age=29 Gender=Male Role=Java Developer
Hinweis: In diesem Beispiel wird JUnit4 als Unit-Test-Tool in Eclipse verwendet Klicken Sie auf das Menü Fenster->Ansicht anzeigen->Gliederung, um es zu öffnen. Klicken Sie in der Gliederungsansicht mit der rechten Maustaste auf die Methoden testXml2Obj bzw. testObj2Xml ->Ausführen als->JUnit-Test.
JAXB ist die Abkürzung für Java Architecture for XML Binding, die zum Erstellen einer Zuordnung zwischen Java-Klassen und XML verwendet wird und Entwicklern dabei helfen kann, XML- und Java-Objekte einfach ineinander zu konvertieren.
In diesem Artikel wird anhand eines einfachen Beispiels die Verwendung von JAXB vorgestellt. Zunächst müssen wir die häufig verwendeten APIs von JAXB verstehen.
Die Klasse JAXBContext ist der Einstiegspunkt der Anwendung und wird zum Verwalten von XML/Java-Bindungsinformationen verwendet.
Marshaller-Schnittstelle, serialisiert Java-Objekte in XML-Daten.
Unmarshaller-Schnittstelle, deserialisiert XML-Daten in Java-Objekte.
@XmlType, ordnet Java-Klassen oder Aufzählungstypen XML-Schematypen zu
@XmlAccessorType(XmlAccessType.FIELD), Steuerfelder oder Serialisierung von Eigenschaften. FIELD bedeutet, dass JAXB automatisch jedes nicht statische (statische), nicht transiente (durch @XmlTransient markierte) Feld in der Java-Klasse an XML bindet. Andere Werte sind XmlAccessType.PROPERTY und XmlAccessType.NONE.
@XmlAccessorOrder, steuert die Reihenfolge von Eigenschaften und Feldern in JAXB-Bindungsklassen
@XmlJavaTypeAdapter, verwendet einen angepassten Adapter (d. h. erweitert die abstrakte Klasse). XmlAdapter und überschreiben Sie die Methoden „marshal()“ und „unmarshal()“, um Java-Klassen in XML zu serialisieren.
@XmlElementWrapper generiert für ein Array oder eine Sammlung (d. h. eine Mitgliedsvariable, die mehrere Elemente enthält) ein XML-Element (Wrapper genannt), das das Array oder die Sammlung umschließt.
@XmlRootElement, ordnet Java-Klassen oder Aufzählungstypen XML-Elementen zu.
@XmlElement, ordnet ein Attribut einer Java-Klasse einem XML-Element mit demselben Namen wie das Attribut zu.
@XmlAttribute, ordnet ein Attribut einer Java-Klasse einem XML-Attribut mit demselben Namen wie das Attribut zu.
Der Inhalt der Java Bean, die wir binden müssen, ist wie folgt:
Employee.java
package net.csdn.beans; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement @XmlType(name = "Employee", propOrder = { "name", "age", "role", "gender" }) public class Employee { private String name; private String gender; private int age; private String role; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } @Override public String toString() { return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender + " Role=" + this.role; } }
Der Inhalt der XML-Datei, die wir binden müssen in ein Java-Objekt umgewandelt werden soll, lautet wie folgt:
employee.xml
<?xml version="1.0"?><employee id="1"> <name>Pankaj</name> <age>29</age> <role>Java Developer</role> <gender>Male</gender></employee>
Als nächstes schreiben Sie den Testfallcode:
TestJAXB.java
package net.csdn.test; import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import net.csdn.beans.Employee; import org.junit.Test; public class TestJAXB { @Test public void testXml2Obj() throws Exception { InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("employee.xml"); byte[] bytes = new byte[is.available()]; is.read(bytes); String xmlStr = new String(bytes); JAXBContext context = JAXBContext.newInstance(Employee.class); Unmarshaller unmarshaller = context.createUnmarshaller(); Employee emp = (Employee) unmarshaller.unmarshal(new StringReader(xmlStr)); System.out.println(emp); } @Test public void testObj2Xml() { Employee emp = new Employee(); emp.setAge(10); emp.setGender("Male"); emp.setName("Jane"); emp.setRole("Teacher"); String xmlStr = TestJAXB.convertToXml(emp,"utf-8"); System.out.println(xmlStr); } public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); result = writer.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } }
Führen Sie testObj2Xml aus Testmethode, Konsolenausgabe:
<?xml version="1.0" encoding="utf-8" standalone="yes"?><employee> <name>Jane</name> <age>10</age> <role>Teacher</role> <gender>Male</gender></employee>
Führen Sie die testXml2Obj-Testmethode aus, Konsolenausgabe:
Employee:: Name=Pankaj Age=29 Gender=Male Role=Java Developer
Hinweis: In diesem Beispiel wird JUnit4 als Unit-Test-Tool in Eclipse verwendet Klicken Sie auf das Menü Fenster->Ansicht anzeigen->Gliederung, um es zu öffnen. Klicken Sie in der Gliederungsansicht mit der rechten Maustaste auf die Methoden testXml2Obj bzw. testObj2Xml ->Ausführen als->JUnit-Test.
Das Obige ist das Java&Xml-Tutorial (11) JAXB-Implementierung der XML- und Java-Objektkonvertierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Spring Boot vereinfacht die Schaffung robuster, skalierbarer und produktionsbereiteter Java-Anwendungen, wodurch die Java-Entwicklung revolutioniert wird. Der Ansatz "Übereinkommen über Konfiguration", der dem Feder -Ökosystem inhärent ist, minimiert das manuelle Setup, Allo

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.

Java leicht gemacht: Ein Leitfaden für Anfänger zur leistungsstarken Programmierung Java ist eine leistungsstarke Programmiersprache, die in allen Bereichen von mobilen Anwendungen bis hin zu Systemen auf Unternehmensebene verwendet wird. Für Anfänger ist die Syntax von Java einfach und leicht zu verstehen, was es zu einer idealen Wahl zum Erlernen des Programmierens macht. Grundlegende Syntax Java verwendet ein klassenbasiertes objektorientiertes Programmierparadigma. Klassen sind Vorlagen, die zusammengehörige Daten und Verhaltensweisen organisieren. Hier ist ein einfaches Java-Klassenbeispiel: publicclassPerson{privateStringname;privateintage;
