Input/Output XML Datei einlesen (JAXB?)

libriX

Mitglied
Hallo liebes Forum,

kurz zu meinem Problem:
Ich erzeuge mit meinem Programm während der Runtime Objekte verschiedener Klassen. Diese Objekte werden in einer Arraylist abgelegt um sie zu bearbeiten bzw auf sie zuzugreifen.
Am Ende des Programms wird diese Arraylist in ein XML Dokument geschrieben.

Ich möchte dieses XML Dokument nun beim erneuten starten des Programms wieder einlesen um es weiterzubearbeiten/zu ändern. Doch irgendwie bekomm ich es nicht hin, dass aus dem XML Dokument wieder Objekte der richtigen Klasse erzeugt werden....

Fürs verständnis hier meine Main-Methode:
Code:
    public static void main(String[] args) throws FileNotFoundException{
           do{
           System.out.println("Choose an option: 1. Creat new employee; 2. Search employee; 3. Delete employee; 4. Exit");
           choice = scan.nextInt();
           switch (choice){
               case 1:
                   //Erstellen eines neuen Mitarbeiters
                   System.out.println("1. Koch; 2. Kellner; 3. Tellerwaescher; 4. Barkeeper");
                   choice2 = scan.nextInt();
                   switch (choice2){
                       case 1:
                           try {
                           System.out.println("Name eingeben:");
                           String name1 = scan.next();
                           System.out.println("Vorname eingeben:");
                           String vorname1 = scan.next();
                           System.out.println("Personal-Nummer eingeben:");
                           int persNr1 = scan.nextInt();
                           System.out.println("Gehalt eingeben:");
                           int gehalt1 = scan.nextInt();
                           System.out.println("Urlaubstage eingeben:");
                           int urlaub1 = scan.nextInt();
                           System.out.println("Einstellungsdatum eingeben: (xx.xx.xxxx)");
                           String datum1 = scan.next();
                           MitarbeiterList.add(new Koch(name1, vorname1, "Koch", persNr1, gehalt1, urlaub1, datum1));
                           System.out.println("Koch erstellt");
                           break;
                           }catch(InputMismatchException e){
                               System.out.println("Überprüfen sie, ob es sich bei den Eingaben Personal-Nummer, Gehalt und Urlaubstagen um Zahlen handelt");
                               System.out.println("Das Programm wurde beendet. Starten Sie es erneut!");
                               System.exit(0);}
                       case 2:
                           try {
                           System.out.println("Name eingeben:");
                           String name2 = scan.next();
                           System.out.println("Vorname eingeben:");
                           String vorname2 = scan.next();
                           System.out.println("Personal-Nummer eingeben:");
                           int persNr2 = scan.nextInt();
                           System.out.println("Gehalt eingeben:");
                           int gehalt2 = scan.nextInt();
                           System.out.println("Urlaubstage eingeben:");
                           int urlaub2 = scan.nextInt();
                           System.out.println("Einstellungsdatum eingeben: (xx.xx.xxxx)");
                           String datum2 = scan.next();
                           MitarbeiterList.add(new Kellner(name2, vorname2, "Kellner", persNr2, gehalt2, urlaub2, datum2));
                           System.out.println("Kellner erstellt");
                           break;
                           }catch(InputMismatchException e){
                               System.out.println("Überprüfen sie, ob es sich bei den Eingaben Personal-Nummer, Gehalt und Urlaubstagen um Zahlen handelt");
                               System.out.println("Das Programm wurde beendet. Starten Sie es erneut!");
                               System.exit(0);}
                       case 3:
                           try {
                           System.out.println("Name eingeben:");
                           String name3 = scan.next();
                           System.out.println("Vorname eingeben:");
                           String vorname3 = scan.next();
                           System.out.println("Personal-Nummer eingeben:");
                           int persNr3 = scan.nextInt();
                           System.out.println("Gehalt eingeben:");
                           int gehalt3 = scan.nextInt();
                           System.out.println("Urlaubstage eingeben:");
                           int urlaub3 = scan.nextInt();
                           System.out.println("Einstellungsdatum eingeben: (xx.xx.xxxx)");
                           String datum3 = scan.next();
                           MitarbeiterList.add(new Koch(name3, vorname3, "Tellerwaescher", persNr3, gehalt3, urlaub3, datum3));
                           System.out.println("Tellerwaescher erstellt");
                           break;
                           }catch(InputMismatchException e){
                               System.out.println("Überprüfen sie, ob es sich bei den Eingaben Personal-Nummer, Gehalt und Urlaubstagen um Zahlen handelt");
                               System.out.println("Das Programm wurde beendet. Starten Sie es erneut!");
                               System.exit(0);}
                       case 4:
                           try {
                           System.out.println("Name eingeben:");
                           String name4 = scan.next();
                           System.out.println("Vorname eingeben:");
                           String vorname4 = scan.next();
                           System.out.println("Personal-Nummer eingeben:");
                           int persNr4 = scan.nextInt();
                           System.out.println("Gehalt eingeben:");
                           int gehalt4 = scan.nextInt();
                           System.out.println("Urlaubstage eingeben:");
                           int urlaub4 = scan.nextInt();
                           System.out.println("Einstellungsdatum eingeben: (xx.xx.xxxx)");
                           String datum4 = scan.next();
                           MitarbeiterList.add(new Koch(name4, vorname4, "Barkeeper", persNr4, gehalt4, urlaub4, datum4));
                           System.out.println("Barkeeper erstellt");
                           break;
                           }catch(InputMismatchException e){
                               System.out.println("Überprüfen sie, ob es sich bei den Eingaben Personal-Nummer, Gehalt und Urlaubstagen um Zahlen handelt");
                               System.out.println("Das Programm wurde beendet. Starten Sie es erneut!");
                               System.exit(0);}
                       default:
                           System.out.println("Falsche Eingabe! Programm wird beendet.");
                           System.exit(0);}
                   System.out.println("Zurueck zum Menu? (ja/nein)");
                   choice3 = scan.next();
                   if (choice3.equals("nein")) {
                       System.out.println(MitarbeiterList.get(0).printMitarbeiterinfo());
                       scan.close();
                       try {
                           String filepath = "C:\\Users\\ckrahlisch\\Documents\\Java\\Mitarbeiter\\Mitarbeiter.xml";
                           DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
                           DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
                           Document doc = docBuilder.newDocument();

                           Element root = doc.createElement("Mitarbeiter");
                           doc.appendChild(root);

                           for (int i = 0; i < MitarbeiterList.size(); i++) {
                               if (MitarbeiterList.get(i).Taetigkeit.equals("Koch")){
                                   MA = doc.createElement("Koch");
                                   root.appendChild(MA);}   
                               else if (MitarbeiterList.get(i).Taetigkeit.equals("Kellner")){
                                   MA = doc.createElement("Kellner");
                                   root.appendChild(MA);}   
                               else if (MitarbeiterList.get(i).Taetigkeit.equals("Tellerwaescher")){
                                   MA = doc.createElement("Tellerwaescher");
                                   root.appendChild(MA);}   
                               else {
                                   MA = doc.createElement("Barkeeper");
                                   root.appendChild(MA);}
               
                               Element Name = doc.createElement("Name");
                               Name.appendChild(doc.createTextNode(MitarbeiterList.get(i).Name));
                               MA.appendChild(Name);

                               Element Vorname = doc.createElement("Vorname");
                               Vorname.appendChild(doc.createTextNode(MitarbeiterList.get(i).Vorname));
                               MA.appendChild(Vorname);

                               Element Taetigkeit = doc.createElement("Taetigkeit");
                               Taetigkeit.appendChild(doc.createTextNode(MitarbeiterList.get(i).Taetigkeit));
                               MA.appendChild(Taetigkeit);

                               Element persAusweisNr = doc.createElement("persAusweisNr");
                               persAusweisNr.appendChild(doc.createTextNode(String.valueOf(MitarbeiterList.get(i).persAusweisNr)));
                               MA.appendChild(persAusweisNr);

                               Element gehalt = doc.createElement("Gehalt");
                               gehalt.appendChild(doc.createTextNode(String.valueOf(MitarbeiterList.get(i).gehalt)));
                               MA.appendChild(gehalt);

                               Element Urlaubstage = doc.createElement("Urlaubstage");
                               Urlaubstage.appendChild(doc.createTextNode(String.valueOf(MitarbeiterList.get(i).Urlaubstage)));
                               MA.appendChild(Urlaubstage);
                               
                               Element EinstellungsDatum = doc.createElement("Einstellungsdatum");
                               EinstellungsDatum.appendChild(doc.createTextNode(MitarbeiterList.get(i).EinstellungsDatum));
                               MA.appendChild(EinstellungsDatum);
                           }

                           //Daten in ein XML-File schreiben
                           TransformerFactory transformerFactory = TransformerFactory.newInstance();
                           Transformer transformer = transformerFactory.newTransformer();
                           transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                           transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
                           DOMSource source = new DOMSource(doc);
                           StreamResult result =  new StreamResult(new File(filepath));
                           transformer.transform(source, result);

                           System.out.println("Done");

                       }catch(ParserConfigurationException pce){
                             pce.printStackTrace();
                       }catch(TransformerException tfe){
                             tfe.printStackTrace();
                       }
                       System.exit(0);}
                   else if (choice3.equals("ja")){
                       weiter = true;
                       break;}
                   else {
                       System.out.println("Ihre Eingabe war Fehlerhaft. Das Programm wird beendet.");
                       break;}
                   System.out.println("Erstellen der Mitarbeiter abgeschlossen.");
               case 2:
                   //Suchen eines Mitarbeiters
                   System.out.println("Mitarbeiter wird gesucht");
                   break;
               case 3:
                   //Löschen eines Mitarbeiters
                   System.out.println("Mitarbeiter wird gelöscht");
                   break;
               case 4:
                   //Vorgang beenden
                   System.out.println("Vorgang wird beendet");
                   weiter = false;
                   break;
               default:
               System.out.println("Falsche Eingabe! Programm wird beendet.");
               System.exit(0);}
       }while (weiter);}}
Und hier noch eine Beispiel XML, welche mit diesem Programm erzeugt wurde:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Mitarbeiter>
  <Koch>
    <Name>test</Name>
    <Vorname>test</Vorname>
    <Taetigkeit>Koch</Taetigkeit>
    <persAusweisNr>123456</persAusweisNr>
    <Gehalt>12345</Gehalt>
    <Urlaubstage>123</Urlaubstage>
    <Einstellungsdatum>1</Einstellungsdatum>
  </Koch>
  <Kellner>
    <Name>1</Name>
    <Vorname>1</Vorname>
    <Taetigkeit>Kellner</Taetigkeit>
    <persAusweisNr>1</persAusweisNr>
    <Gehalt>1</Gehalt>
    <Urlaubstage>1</Urlaubstage>
    <Einstellungsdatum>1</Einstellungsdatum>
  </Kellner>
  <Tellerwaescher>
    <Name>5</Name>
    <Vorname>5</Vorname>
    <Taetigkeit>Tellerwaescher</Taetigkeit>
    <persAusweisNr>5</persAusweisNr>
    <Gehalt>5</Gehalt>
    <Urlaubstage>5</Urlaubstage>
    <Einstellungsdatum>5</Einstellungsdatum>
  </Tellerwaescher>
  <Barkeeper>
    <Name>7</Name>
    <Vorname>7</Vorname>
    <Taetigkeit>Barkeeper</Taetigkeit>
    <persAusweisNr>7</persAusweisNr>
    <Gehalt>7</Gehalt>
    <Urlaubstage>7</Urlaubstage>
    <Einstellungsdatum>7</Einstellungsdatum>
  </Barkeeper>
</Mitarbeiter>
Kann mir jemand helfen? .. Ich hab es mit JAXB versucht jedoch komm ich da irgendwie nicht weiter... Falls ihr noch die anderen Klassen braucht poste ich diese gerne.

Herzlichen Dank schonmal im Vorraus!

Mit freundlichen Grüßen
 

max40

Bekanntes Mitglied
Mit dem selber schreiben/lesen von XML ist zu aufwändig.
Zum schreiben von Java-Daten nach XML: http://www.torsten-horn.de/techdocs/java-xml-jaxb.htm#JAXB-Marshaller
XML nach Java: http://www.torsten-horn.de/techdocs/java-xml-jaxb.htm#JAXB-Unmarshaller

Statt <Kellner>, <Barkeeper> etc. würde ich lieber
<Person funktion="Kellner">, <Person funktion="Barkeeper"> etc. oder so machen.

Schau dir das Beispiel von den Links an, test genau das mal und dann münz das auf dein Beispiel um. Ist total einfach.
 

libriX

Mitglied
Mit dem selber schreiben/lesen von XML ist zu aufwändig.
Zum schreiben von Java-Daten nach XML: http://www.torsten-horn.de/techdocs/java-xml-jaxb.htm#JAXB-Marshaller
XML nach Java: http://www.torsten-horn.de/techdocs/java-xml-jaxb.htm#JAXB-Unmarshaller

Statt <Kellner>, <Barkeeper> etc. würde ich lieber
<Person funktion="Kellner">, <Person funktion="Barkeeper"> etc. oder so machen.

Schau dir das Beispiel von den Links an, test genau das mal und dann münz das auf dein Beispiel um. Ist total einfach.

Ok das erschlägt mich grad ein wenig :D
Ich werde es mir zu Gemühte führen und ein wenig rumprobieren. Vielen Dank für die Links!

Ich habe die so benannt, weil ich dachte, dass es dadurch im Anschluss evtl. leichter ist wieder Objekte aus dem XML Dokument zu erzeugen. Denn meine anderen Klassen heißen: Koch, Kellner, Tellerwaescher und Barkeeper.


Mit freundlichen Grüßen
 

max40

Bekanntes Mitglied
Vielleicht hilft dir das weiter?!
Java:
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXB;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="mitarbeiterliste")
@XmlAccessorType(XmlAccessType.FIELD)
public class MitarbeiteListe {
   
    private List<Mitarbeiter> mitarbeiter;
   
    public MitarbeiteListe() {
        super();
    }

    public List<Mitarbeiter> getListe() {
        if (mitarbeiter == null){
            mitarbeiter = new ArrayList<Mitarbeiter>();
        }
        return mitarbeiter;
    }

    public void setListe(List<Mitarbeiter> liste) {
        this.mitarbeiter = liste;
    }

    /**
     * Beispiel : 2 Personen hinzufügen, speichern und laden
     * @param args
     * @throws JAXBException
     */
    public static void main(String[] args) throws JAXBException {
       
        MitarbeiteListe list = new MitarbeiteListe();
       
        Mitarbeiter m1 = new Mitarbeiter();
        m1.setFunktion("Koch");
        m1.setName("Mustermann");
        m1.setVorname("Max");
        m1.setPersonalnr("112");
        m1.setUrlaubstage("30");
        m1.setGehalt("2000");
        list.getListe().add(m1);
       
        Mitarbeiter m2 = new Mitarbeiter();
        m2.setFunktion("Kellner");
        m2.setName("Musterfrau");
        m2.setVorname("Inge");
        m2.setPersonalnr("113");
        m2.setUrlaubstage("28");
        m2.setGehalt("1800");
        list.getListe().add(m2);
       
       
        File f = new File("C:/Temp/test.xml");

        // Speichern
        JAXBContext jc = JAXBContext.newInstance(MitarbeiteListe.class);
        Marshaller m = jc.createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        m.marshal(list,  f);
       
        // Laden
        MitarbeiteListe newlist = JAXB.unmarshal(f, MitarbeiteListe.class);
       
        System.out.println("Anzahl einträge: " + newlist.mitarbeiter.size());
       
    }
   
}


Java:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;

@XmlAccessorType(XmlAccessType.FIELD)
public class Mitarbeiter {
    @XmlAttribute
    private String funktion;
    private String name;
    private String vorname;
    private String personalnr;
    private String gehalt;
    private String urlaubstage;
    private String einstellungsdatum;

    public Mitarbeiter() {
        super();
    }

    public String getFunktion() {
        return funktion;
    }

    public void setFunktion(String funktion) {
        this.funktion = funktion;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }

    public String getPersonalnr() {
        return personalnr;
    }

    public void setPersonalnr(String personalnr) {
        this.personalnr = personalnr;
    }

    public String getGehalt() {
        return gehalt;
    }

    public void setGehalt(String gehalt) {
        this.gehalt = gehalt;
    }

    public String getUrlaubstage() {
        return urlaubstage;
    }

    public void setUrlaubstage(String urlaubstage) {
        this.urlaubstage = urlaubstage;
    }

    public String getEinstellungsdatum() {
        return einstellungsdatum;
    }

    public void setEinstellungsdatum(String einstellungsdatum) {
        this.einstellungsdatum = einstellungsdatum;
    }

}
 

libriX

Mitglied
Öhm du kannst das doch einfach mit Marshalling / Unmarshalling gestalten.

Hier ein einfaches Beispiel: https://www.mkyong.com/java/jaxb-hello-world-example/

EDIT: Hups vorherigen POST nicht gelesen :oops:
Macht ja nichts :) Trotzdem danke.

Mein problem gerade ist, dass ich mir das nicht wirklich erklären kann wie das mit den Annotationen funktionieren soll.

Ich habe eine Klasse Mitarbeiter und diese vererbt ihre Atrribute an Koch und Co.
Ich möchte im XML File dann die Klasse Mitarbeiter als @XmlRootElement die Klassen Koch, Kellner und Co als @XmlElement und die Attribute, welche alle von der Klasse Mitarbeiter vererbt werden (Name, Vorname, EinstellungsDatum, usw) als @XmlAttribute

Wenn ich das bei den Attributen in der Klasse Mitarbeiter mache, wird das dann automatisch an die anderen Klassen weitergegeben? Also weiß der Marshaller dann, dass auch bei der Klasse Koch, wenn ein Name übergeben wird, dieser als Attribut in der XML einzutagen ist?

Vielen Dank! :)


Vielleicht hilft dir das weiter?!
Java:
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXB;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="mitarbeiterliste")
@XmlAccessorType(XmlAccessType.FIELD)
public class MitarbeiteListe {
   
    private List<Mitarbeiter> mitarbeiter;
   
    public MitarbeiteListe() {
        super();
    }

    public List<Mitarbeiter> getListe() {
        if (mitarbeiter == null){
            mitarbeiter = new ArrayList<Mitarbeiter>();
        }
        return mitarbeiter;
    }

    public void setListe(List<Mitarbeiter> liste) {
        this.mitarbeiter = liste;
    }

    /**
     * Beispiel : 2 Personen hinzufügen, speichern und laden
     * @param args
     * @throws JAXBException
     */
    public static void main(String[] args) throws JAXBException {
      
        MitarbeiteListe list = new MitarbeiteListe();
      
        Mitarbeiter m1 = new Mitarbeiter();
        m1.setFunktion("Koch");
        m1.setName("Mustermann");
        m1.setVorname("Max");
        m1.setPersonalnr("112");
        m1.setUrlaubstage("30");
        m1.setGehalt("2000");
        list.getListe().add(m1);
      
        Mitarbeiter m2 = new Mitarbeiter();
        m2.setFunktion("Kellner");
        m2.setName("Musterfrau");
        m2.setVorname("Inge");
        m2.setPersonalnr("113");
        m2.setUrlaubstage("28");
        m2.setGehalt("1800");
        list.getListe().add(m2);
      
      
        File f = new File("C:/Temp/test.xml");

        // Speichern
        JAXBContext jc = JAXBContext.newInstance(MitarbeiteListe.class);
        Marshaller m = jc.createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        m.marshal(list,  f);
      
        // Laden
        MitarbeiteListe newlist = JAXB.unmarshal(f, MitarbeiteListe.class);
      
        System.out.println("Anzahl einträge: " + newlist.mitarbeiter.size());
      
    }
   
}


Java:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;

@XmlAccessorType(XmlAccessType.FIELD)
public class Mitarbeiter {
    @XmlAttribute
    private String funktion;
    private String name;
    private String vorname;
    private String personalnr;
    private String gehalt;
    private String urlaubstage;
    private String einstellungsdatum;

    public Mitarbeiter() {
        super();
    }

    public String getFunktion() {
        return funktion;
    }

    public void setFunktion(String funktion) {
        this.funktion = funktion;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }

    public String getPersonalnr() {
        return personalnr;
    }

    public void setPersonalnr(String personalnr) {
        this.personalnr = personalnr;
    }

    public String getGehalt() {
        return gehalt;
    }

    public void setGehalt(String gehalt) {
        this.gehalt = gehalt;
    }

    public String getUrlaubstage() {
        return urlaubstage;
    }

    public void setUrlaubstage(String urlaubstage) {
        this.urlaubstage = urlaubstage;
    }

    public String getEinstellungsdatum() {
        return einstellungsdatum;
    }

    public void setEinstellungsdatum(String einstellungsdatum) {
        this.einstellungsdatum = einstellungsdatum;
    }

}

Grad erst deinen Beitrag gesehen. Vielen Dank für deine Mühe :D
Das Hilft mir schonmal sehr. Jedoch beantwrotet sich meine Frage dadurch noch nicht ganz.

Und durch deinen Code ergibt sich mir noch eine Frage:
Was genau macht der @XmlAccessorType?

Vielen Dank!
 
Zuletzt bearbeitet:

libriX

Mitglied
Habe es nun soweit angepasst, bekomme nun jedoch eine exception:
Code:
Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Mitarbeiter enthält keinen "no-arg"-Standardkonstruktor.
   this problem is related to the following location:
       at Mitarbeiter
       at private java.util.ArrayList MitarbeiterListe.mitarbeiter
       at MitarbeiterListe

   at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(Unknown Source)
   at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(Unknown Source)
   at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
   at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
   at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(Unknown Source)
   at com.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
   at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
   at javax.xml.bind.ContextFinder.find(Unknown Source)
   at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
   at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
   at abstract_main.main(abstract_main.java:201)
So wie ich es verstehe, liegt es an dem Konstruktor der Klasse Mitarbeiter, da dieser argumente enthält.

er sieht aus wie folgt:
Java:
public Mitarbeiter(String Name, String Vorname,String Taetigkeit, int persAusweisNr, int gehalt, int Urlaubstage, String EinstellungsDatum)[code]
[/code
Mein Problem ist jetzt, dass ich diese Attribute mit übergeben muss, da alle anderen Klassen von Mitarbeiter erben?
Ich steh wirklich auf dem schlauch
 
Zuletzt bearbeitet:

libriX

Mitglied
Es funktioniert :'D
Ich sah den Wald vor lauter bäumen nicht. ^^

EDIT:
XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MitarbeiterListe>
    <Mitarbeiter name="Mustermann">
        <Vorname>Max</Vorname>
        <Taetigkeit>Koch</Taetigkeit>
        <persAusweisNr>123456</persAusweisNr>
        <gehalt>2345</gehalt>
        <Urlaubstage>23</Urlaubstage>
        <EinstellungsDatum>12.12.2012</EinstellungsDatum>
    </Mitarbeiter>
    <Mitarbeiter name="Musterfrau">
        <Vorname>Ina</Vorname>
        <Taetigkeit>Kellner</Taetigkeit>
        <persAusweisNr>654321</persAusweisNr>
        <gehalt>1234</gehalt>
        <Urlaubstage>12</Urlaubstage>
        <EinstellungsDatum>13.12.2017</EinstellungsDatum>
    </Mitarbeiter>
</MitarbeiterListe>
Warum nimmt er <Mitarbeiter name="Mustermann"> auf eine Zeile obwohl ich es wie folgt deklariert hab?:

Java:
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Mitarbeiter {
   @XmlAttribute
   protected String Name;
   protected String Vorname;
   protected String Taetigkeit;
   protected int persAusweisNr;
   protected int gehalt;
   protected int Urlaubstage;
   protected String EinstellungsDatum;
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
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
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
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
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
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
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
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
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
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
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
M Methoden Datei einlesen und als return übergeben. Java Basics - Anfänger-Themen 8
P CSV Datei einlesen und damit ein Datenmodell befüllen Java Basics - Anfänger-Themen 2
N Datei einlesen und grafisch anzeigen Java Basics - Anfänger-Themen 31
P csv Datei einlesen und ausgeben Java Basics - Anfänger-Themen 5
J Text Datei einlesen Java Basics - Anfänger-Themen 6
N gerichteter Graph aus einer Datei einlesen Java Basics - Anfänger-Themen 21
E Datei einlesen und bestimmte Wörter ausgeben Java Basics - Anfänger-Themen 2
Z Erste Schritte Versuche ein Labyrinth in einem Terminal zu erstellen, aber kann die properties Datei nicht einlesen Java Basics - Anfänger-Themen 3
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
V Excel Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 4
stylegangsta Input/Output Hat eclipse eine Macke oder mein Code Array Datei einlesen Java Basics - Anfänger-Themen 5
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
J CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 10
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
A Datei in Array einlesen Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
J .txt Datei "einlesen "und in String speichern ergibt immer NULL Java Basics - Anfänger-Themen 17
M CSV-File aus datei system einlesen Java Basics - Anfänger-Themen 3
B Datei in Java einlesen Java Basics - Anfänger-Themen 13
S Datei einlesen und ausgeben Java Basics - Anfänger-Themen 8
S Input/Output einlesen aus einer evtl. leeren Datei Java Basics - Anfänger-Themen 5
J Input/Output Datei - Zeilenumbruch einlesen Java Basics - Anfänger-Themen 10
H config Datei erstellen + einlesen Java Basics - Anfänger-Themen 15
F Datei einlesen ( Bytes ) Java Basics - Anfänger-Themen 12
T Klassen CSV datei einlesen und parsen Java Basics - Anfänger-Themen 4
U Datei einlesen Java Basics - Anfänger-Themen 9
S ANSI-Datei einlesen UND UTF-8-Datei schreiben Java Basics - Anfänger-Themen 3
M Datei einlesen mit generics? Java Basics - Anfänger-Themen 9
I Datei einlesen, Inhalt in MAP ablegen Java Basics - Anfänger-Themen 10
A Erste Schritte Datei einlesen und Buchstaben zählen Java Basics - Anfänger-Themen 13
D txt-Datei zeilenweise als String einlesen Java Basics - Anfänger-Themen 2
E JPane txt datei einlesen Java Basics - Anfänger-Themen 5
D RegExp .txt-Datei einlesen Java Basics - Anfänger-Themen 6
M Datei Einlesen Fortan-Style? Java Basics - Anfänger-Themen 3
A Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 5
S Datei einlesen Java Basics - Anfänger-Themen 21
D Datei einlesen Fehler Java Basics - Anfänger-Themen 17
A Beim txt Datei einlesen kommen zusätzliche Lehrzeichen dazu. Java Basics - Anfänger-Themen 5
H eine Datei schnellstmöglich einlesen Java Basics - Anfänger-Themen 12
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
E Input/Output Linux datei in Windows zeilenweise einlesen Java Basics - Anfänger-Themen 4
S XML Datei einlesen und Elemente ausgeben Java Basics - Anfänger-Themen 4
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
E externe .txt Datei mit Scanner einlesen Java Basics - Anfänger-Themen 7
N Input/Output .txt-Datei einlesen, aufteilen und seperat abspeichern Java Basics - Anfänger-Themen 3
L Datei einlesen Java Basics - Anfänger-Themen 12
L Input/Output Datei in Java einlesen Java Basics - Anfänger-Themen 9
J Datei einlesen Java Basics - Anfänger-Themen 10
I .csv-Datei einlesen klappt aber kann nicht in String geschrieben werden!?!?! Java Basics - Anfänger-Themen 11
S Datei einlesen und Ergebnis wieder in Datei schreiben Java Basics - Anfänger-Themen 5
J Datei einlesen teile aus lines ändern und wieder rausschreiben. Java Basics - Anfänger-Themen 4
B Wertetabelle mit versch. Formaten aus txt-Datei einlesen Java Basics - Anfänger-Themen 2
H 200000 Zeilen aus Datei einlesen Java Basics - Anfänger-Themen 13
D CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 23
J byteweise Einlesen einer Datei "Von.. bis.." Java Basics - Anfänger-Themen 3
J Einlesen/Speichern von Strings aus einer Datei Java Basics - Anfänger-Themen 15
Z CSV-Datei einlesen mit dem JFileChooser !!! Java Basics - Anfänger-Themen 5
H Einlesen einer CSV-Datei Java Basics - Anfänger-Themen 2
X einlesen aus Datei, Fehler Java Basics - Anfänger-Themen 9
S Einlesen einer Datei? Java Basics - Anfänger-Themen 9
L Datei einlesen und neu geändert ausgeben Java Basics - Anfänger-Themen 8
B Formel aus Datei einlesen und benutzen Java Basics - Anfänger-Themen 3
C Datei einlesen Java Basics - Anfänger-Themen 19
H Datei einlesen in einer MVC Anwendung Java Basics - Anfänger-Themen 3
M OutOfMemoryError beim Datei einlesen Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben