XML Bearbeiten ISO 8859-15

Zamurei

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
 

Zamurei

Mitglied
Zuletzt bearbeitet:

musiKk

Top Contributor
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.
 
M

Marcinek

Gast
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.
 

Zamurei

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:

Zamurei

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

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:

Zamurei

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

Java:
getAttributeValue("nr");

komm ich zwar an das erste Feld, aber wie komme ich denn an das Zweite?

Danke und Gruß
Zamu
 

c_sidi90

Top Contributor
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
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:

Zamurei

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
 

c_sidi90

Top Contributor
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.
 

Zamurei

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
 

Zamurei

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

Java:
FileWriter writer = new FileWriter (new File("C:/Test/test.xml"));
fmt.output(doc, writer);

mache bekomme ich das nur als "UTF-8" kodiert.
 

Landei

Top Contributor
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
 

Ähnliche Java Themen


Oben