XML Bearbeiten ISO 8859-15

Dieses Thema im Forum "XML und Co." wurde erstellt von Zamurei, 6. Feb. 2012.

  1. Zamurei

    Zamurei Neues Mitglied

    Hallo,

    könnte mir jemand erklären wie ich eine XML Datei einlesen und bearbeiten kann die als ISO 8859-15 kodiert ist.

    mfg
    Zamu
     
  2. Marcinek

    Marcinek Guest

    Mit einem SAX oder DOM Parser.
     
  3. Zamurei

    Zamurei Neues Mitglied

    Zuletzt bearbeitet: 7. Feb. 2012
  4. musiKk

    musiKk Neues Mitglied

    Es wäre sehr sinnvoll, wenn Du Deine bisherigen Bemühungen zeigen könntest und was Du eigentlich machen willst. Im Moment kann das alles oder nichts sein.
     
  5. Marcinek

    Marcinek Guest

    Nein, das ist nicht das wonach du suchst.

    Suche nach "Tutorial SAX Parser"

    Ich würde es dir gerne erklären, aber XML Parsen ist nix, was du nun neu erfindest und es ist schon bestimmt google mal beschrieben.
     
  6. Zamurei

    Zamurei Neues Mitglied

    Ich möchte eine XML-Datei einlesen und diese verändern können. Jedoch habe ich Probleme mit der Kodierung.

    Die Datei ist als "ISO 8859-15" kodiert.



    edit:
    Danke, das hilft mir schon mal weiter.
     
    Zuletzt bearbeitet: 7. Feb. 2012
  7. Marcinek

    Marcinek Guest

    Weißt du, was das bedeutet?

    Zeig mal bitte deinen bisherigen Code.
     
  8. Zamurei

    Zamurei Neues Mitglied

    Das ist doch der Zeichensatz der verwendet wird um den Text darzustellen.

    Code (Java):
     
    Document doc;
    File f = new File(pfad);

    SAXBuilder builder = new SAXBuilder();
    InputSource is = new InputSource(pfad);
    is.setEncoding("iso-8859-15");
    doc = builder.build(is);

    XMLOutputter fmt = new XMLOutputter();
    fmt.output(doc, System.out);
    Hiermit kann ich die XML Datei jetzt ohne Probleme einlesen und auch in der Konsole wieder ausgeben.

    mfg
    zamu


    edit:Jetzt stellt sich mir nur die Frage wie ich in der Datei Elemente suchen und bearbeiten kann.
     
    Zuletzt bearbeitet: 7. Feb. 2012
  9. Zamurei

    Zamurei Neues Mitglied

    Hallo,

    ich hätte noch eine Frag zur Bearbeitung der XML-Datei.

    [XML]<Feld nr="1234" name="hans" wert="5"/>
    <Feld nr="56789" name="michael" wert="3"/>[/XML]

    Mit

    Code (Java):
    getAttributeValue("nr");
    komm ich zwar an das erste Feld, aber wie komme ich denn an das Zweite?

    Danke und Gruß
    Zamu
     
  10. c_sidi90

    c_sidi90 Neues Mitglied

    Wenn man mit XML Frameworks arbeitet wie z.B. JDOM bietet es sich an, die verschiedenen Elemente in eine List zu speichern. So kannst du durch alle Elemente iterieren und auf die einzelnen Attribute zugreifen.

    Die Children des Rootelements bekommst du mit JDOM z.B. durch einen Aufruf von
    Code (Java):
     Element root = document.getRootElement();
    List children = root.getChildren();

    //Jetzt kannst du in einer Schleife durch die Liste iterieren

    for(Element e : children){

       String value = e.getAttributeValue("nr"));
       System.out.println(value);
     
    }
     
    Zuletzt bearbeitet: 8. Feb. 2012
  11. Zamurei

    Zamurei Neues Mitglied

    Ah, super Danke hat funktioniert.

    Gruß
    Zamu
     
  12. Zamurei

    Zamurei Neues Mitglied

    Hi,

    kannst du mir auch sagen wie ich zum Beispiel das Feld zwei löschen kann, denn wenn ich das selbe mit deiner Methode versuche, funkioniert das leider nicht.

    Gruß
    Zamu
     
  13. c_sidi90

    c_sidi90 Neues Mitglied

    Dafür musst du ein neues Document erstellen, und in diesem die Inhalte aus dem alten Laden. Aus der alten List mit den Children die beliebigen löschen, und diese List dem neuen Document hinzufügen. Also quasi eine exakte Kopie des ersten.
     
  14. Zamurei

    Zamurei Neues Mitglied

    Hallo,

    Also du meinst ich soll eine Kopie erstellen und das was ich löschen will einfach nur weglassen, beim schreiben des neuen Dokumentes?

    Gruß
    Zamu
     
  15. c_sidi90

    c_sidi90 Neues Mitglied

  16. Zamurei

    Zamurei Neues Mitglied

    Hi,

    kannst du mir dann vllt noch sagen wie ich das ganze wieder als "iso-8859-15" abspeichern kann.

    Denn wenn ich das über

    Code (Java):
    FileWriter writer = new FileWriter (new File("C:/Test/test.xml"));
    fmt.output(doc, writer);
    mache bekomme ich das nur als "UTF-8" kodiert.
     
  17. Landei

    Landei Neues Mitglied

    Wenn deine XML-Datei eine feste Syntax hat und einem oder mehreren Objekten in deiner Applikation entspricht, kannst du auch JAXB zum deserialisieren nehmen, also statt XML---(Magie)--->DOM---(viel Handarbeit)--->DeinObjekt direkt XML---(Magie)--->DeinObjekt
     
Die Seite wird geladen...