suchen
HeimBackend-EntwicklungXML/RSS-TutorialJava&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)!


Stellungnahme
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
JSON-, XML- und Datenformate: RSS vergleichenJSON-, XML- und Datenformate: RSS vergleichenMay 02, 2025 am 12:20 AM

Die Hauptunterschiede zwischen JSON, XML und RSS sind Struktur und Verwendungszwecke: 1. JSON ist für einen einfachen Datenaustausch geeignet, mit einer kurzen Struktur und leicht zu analysieren. 2. XML ist für komplexe Datenstrukturen mit einer strengen Struktur, aber komplexer Analyse geeignet. 3..

Fehlerbehebung XML/RSS -Feeds: Häufige Fallstricke und ExpertenlösungenFehlerbehebung XML/RSS -Feeds: Häufige Fallstricke und ExpertenlösungenMay 01, 2025 am 12:07 AM

Die Verarbeitung von XML/RSS -Feeds beinhaltet Parsen und Optimierung, und häufige Probleme umfassen Formatfehler, Codierungsprobleme und fehlende Elemente. Zu den Lösungen gehören: 1. Verwenden Sie XML -Verifizierungstools, um nach Formatfehlern zu überprüfen; 2. Gewährleistung der Codierungskonsistenz und verwenden Sie die Chardet -Bibliothek, um Codierung zu erkennen. 3. Verwenden Sie Standardwerte oder überspringen Sie das Element, wenn sie fehlende Elemente haben. 4. Verwenden Sie effiziente Parser wie LXML- und Cache -Parsing -Ergebnisse, um die Leistung zu optimieren. 5. Achten Sie auf Datenkonsistenz und Sicherheit, um XML -Injektionsangriffe zu verhindern.

Dekodieren von RSS -Dokumenten: Lesen und Interpretieren von FeedsDekodieren von RSS -Dokumenten: Lesen und Interpretieren von FeedsApr 30, 2025 am 12:02 AM

Zu den Schritten zum Analyse von RSS -Dokumenten gehören: 1. Lesen Sie die XML -Datei, 2. verwenden DOM oder SAX, um XML zu analysieren, 3. Extrahieren von Überschriften, Links und anderen Informationen und 4. Prozessdaten. RSS-Dokumente sind XML-basierte Formate, die zur Veröffentlichung aktualisierter Inhalte, Strukturen und Elemente verwendet werden, die zum Erstellen von RSS-Lesern oder Datenverarbeitungstools geeignet sind.

RSS und XML: Der Eckpfeiler der Web -SyndizierungRSS und XML: Der Eckpfeiler der Web -SyndizierungApr 29, 2025 am 12:22 AM

RSS und XML sind die Kerntechnologien für die Verteilung von Netzwerkinhalten und den Datenaustausch. RSS wird verwendet, um häufig aktualisierte Inhalte zu veröffentlichen, und XML wird verwendet, um Daten zu speichern und zu übertragen. Entwicklungseffizienz und Leistung können durch Nutzungsbeispiele und Best Practices in realen Projekten verbessert werden.

RSS -Feeds: Erforschung der Rolle und Zweck von XMLRSS -Feeds: Erforschung der Rolle und Zweck von XMLApr 28, 2025 am 12:06 AM

Die Rolle von XML bei RSSFeed besteht darin, Daten zu strukturieren, zu standardisieren und Skalierbarkeit zu bieten. 1.xml macht RSSFeed -Daten strukturiert, was es einfach macht, analysieren und zu verarbeiten. 2.xml bietet eine standardisierte Möglichkeit, das Format von RSSFeed zu definieren. 3.xml Skalierbarkeit ermöglicht es RSSFeed, nach Bedarf neue Tags und Attribute hinzuzufügen.

Skalierung von XML/RSS -Verarbeitung: LeistungsoptimierungstechnikenSkalierung von XML/RSS -Verarbeitung: LeistungsoptimierungstechnikenApr 27, 2025 am 12:28 AM

Bei der Verarbeitung von XML- und RSS -Daten können Sie die Leistung in den folgenden Schritten optimieren: 1) Effiziente Parser wie LXML verwenden, um die Parsengeschwindigkeit zu verbessern; 2) SAX -Parsers verwenden, um den Speicherverbrauch zu reduzieren. 3) Verwenden Sie XPath -Ausdrücke, um die Effizienz der Datenextraktion zu verbessern. 4) Implementieren Sie die parallele Verarbeitung von Multi-Process, um die Verarbeitungsgeschwindigkeit zu verbessern.

RSS -Dokumentformate: RSS 2.0 und darüber hinaus ErkundungRSS -Dokumentformate: RSS 2.0 und darüber hinaus ErkundungApr 26, 2025 am 12:22 AM

RSS2.0 ist ein offener Standard, mit dem Content -Publisher Inhalte strukturiert verteilen kann. Es enthält reichhaltige Metadaten wie Titel, Links, Beschreibungen, Veröffentlichungsdaten usw., mit denen Abonnenten schnell durchsuchen und auf Inhalte zugreifen können. Die Vorteile von RSS2.0 sind seine Einfachheit und Skalierbarkeit. Beispielsweise ermöglicht es benutzerdefinierte Elemente, dh Entwickler können zusätzliche Informationen basierend auf ihren Anforderungen hinzufügen, z. B. Autoren, Kategorien usw.

RSS verstehen: Eine XML -PerspektiveRSS verstehen: Eine XML -PerspektiveApr 25, 2025 am 12:14 AM

RSS ist ein XML-basiertes Format, das zur Veröffentlichung häufig aktualisierter Inhalte verwendet wird. 1. RSSFEED organisiert Informationen über die XML -Struktur, einschließlich Titel, Link, Beschreibung usw. 2. Das Erstellen von RSSFeed erfordert das Schreiben in der XML -Struktur und addiert Metadaten wie Sprache und Veröffentlichungsdatum. 3. Die erweiterte Verwendung kann Multimedia -Dateien und klassifizierte Informationen enthalten. 4. Verwenden Sie beim Debuggen XML -Überprüfungswerkzeuge, um sicherzustellen, dass die erforderlichen Elemente existieren und korrekt codiert werden. 5. Optimierung von RSSFeed kann durch Pagen, Zwischenspeichern und Einfachen der Struktur erreicht werden. Durch das Verständnis und Anwenden dieses Wissens können Inhalte effektiv verwaltet und verteilt werden.

See all articles

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung