Heim Backend-Entwicklung XML/RSS-Tutorial Java&Xml-Tutorial (11) JAXB implementiert die XML- und Java-Objektkonvertierung

Java&Xml-Tutorial (11) JAXB implementiert die XML- und Java-Objektkonvertierung

Feb 22, 2017 pm 03:05 PM


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;
    }

}
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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;  
    } 

}
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie die testXml2Obj-Testmethode aus, Konsolenausgabe:

Employee:: Name=Pankaj Age=29 Gender=Male Role=Java Developer
Nach dem Login kopieren
Nach dem Login kopieren

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;
    }

}
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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;  
    } 

}
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie die testXml2Obj-Testmethode aus, Konsolenausgabe:

Employee:: Name=Pankaj Age=29 Gender=Male Role=Java Developer
Nach dem Login kopieren
Nach dem Login kopieren

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)!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

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.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

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

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

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

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

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.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

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

Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Wie führe ich Ihre erste Spring -Boot -Anwendung in der Spring Tool Suite aus? Feb 07, 2025 pm 12:11 PM

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

Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Oct 13, 2024 pm 01:32 PM

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 Programmierleistung Java leicht gemacht: Ein Leitfaden für Anfänger zur Programmierleistung Oct 11, 2024 pm 06:30 PM

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;

See all articles