XML einlesen und Objekte bekommen

internet

Top Contributor
Hallo,

ich möchte eine entsprechende XML einlesen, die folgende Struktur hat:

Java:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<NML VERSION="14">
    <HEAD COMPANY="www.test.com" PROGRAM="Test"></HEAD>
    <MUSICFOLDERS></MUSICFOLDERS>
    <COLLECTION ENTRIES="11888">
        <ENTRY MODIFIED_DATE="2010/12/3" MODIFIED_TIME="58906" TITLE="The Way I Do" ARTIST="2-4 Grooves">
            <LOCATION VOLUME="C:" VOLUMEID="084e4720"></LOCATION>
            <ALBUM TITLE="Kontor House Of House 2"></ALBUM>

die Tags sind entsprechend auch wieder geschlossen...

Wie kann ich das genau machen?
Muss ich mir entsprechende Java Klassen für jeden Knoten erstellen?

Code:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Nml {

    @XmlAttribute
    private String version;

    private Head head;

    // getter, setter and toString...
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Head {

    @XmlAttribute
    private String company;

    @XmlAttribute
    private String program;

    private Collection collection;

    // getter, setter and toString...
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Collection {

    @XmlAttribute
    private int entries;

    @XmlAttribute
    private String program;

    private List<Entry> entry;
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Entry {

    @XmlAttribute
    private String title;

    private List<Entry> entry;
}

Und lese dann so ein:
Java:
public class Test {

    public static void main(String[] args) {

        JAXBContext jaxbContext = null;
        try {

            jaxbContext = org.eclipse.persistence.jaxb.JAXBContextFactory
                    .createContext(new Class[]{Nml.class}, null);

            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

            // output pretty printed
            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            // output to a xml file
            jaxbMarshaller.marshal(o, new File("C:\\test\\myfile.xml"));

 
        } catch (JAXBException e) {
            e.printStackTrace();
        }

    }

}

danke für jede Hilfe
 

LimDul

Top Contributor
Im Großen und ganzen ist das eine von vielen Möglichkeiten - allerdings ist marshal das konvertieren von Java => XML - wenn du was einlesen willst, wäre es unmarshall. Wenn du Jaxb nutzt dann musst du den Teil des XML-Dokuments in der passenden Java-Struktur abbilden. Solltest du Zugriff auf eine xsd oder DTD haben, sollten sich die Java-Klassen auch generieren lassen.

Alternative Varianten wären es per SAX zu parsen (https://www.baeldung.com/java-sax-parser). Oder über den DOM-Parser es einzulesen + diverse weitere.

Hier findest du einen Überblick: https://www.baeldung.com/java-xml

Was genau ist jetzt deine Frage?
 

MisterBu

Aktives Mitglied
Da gibt es verschiedene Ansätze. Dazu mal ein funktionierendes Beispiel:
Java:
package org.myoggradio.stb.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.myoggradio.stb.Factory;
import org.myoggradio.stb.Protokol;
import org.myoggradio.stb.Spieler;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class XMLSpielerLoader
{
    public ArrayList<Spieler> load(File file)
    {
        ArrayList<Spieler> erg = new ArrayList<Spieler>();
        try
        {
            InputStream fin = new FileInputStream(file);
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(fin));
            Node turnier = doc.getFirstChild();
            Element elemturnier = (Element) turnier;
            erg = getSpielerList(elemturnier);
        }
        catch (Exception e)
        {
            Protokol.write("XMLSpielerLoader:read:Exception:");
            Protokol.write(e.toString());
        }
        return erg;
    }
    public Spieler getSpieler(Element element)
    {
        Spieler erg = Factory.getSpieler();
        String sid = element.getAttribute("id");
        String vorname = element.getAttribute("vorname");
        String name = element.getAttribute("name");
        String sdwz = element.getAttribute("dwz");
        int dwz = Integer.parseInt(sdwz);
        int id = Integer.parseInt(sid);
        erg.setId(id);
        erg.setVorname(vorname);
        erg.setName(name);
        erg.setDWZ(dwz);
        return erg;
    }
    public ArrayList<Spieler> getSpielerList(Element element)
    {
        ArrayList<Spieler> erg = new ArrayList<Spieler>();
        NodeList list = element.getChildNodes();
        for (int i=0;i<list.getLength();i++)
        {
            Node node = list.item(i);
            if (node instanceof Element)
            {
                Element spielerlistelement = (Element) node;
                String name = spielerlistelement.getTagName();
                if (name.equals("spieler"))
                {
                    Spieler spieler = getSpieler(spielerlistelement);
                    erg.add(spieler);
                }
            }
        }
        return erg;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Textdatei einlesen in ArryList (Objekte abspeichern?) Java Basics - Anfänger-Themen 4
G Objekte extern speichern und wieder einlesen Java Basics - Anfänger-Themen 2
G Objekte binär speichern und später wieder einlesen? Java Basics - Anfänger-Themen 7
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben