# XML Bearbeiten ISO 8859-15



## Zamurei (6. Feb 2012)

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


----------



## Marcinek (6. Feb 2012)

Mit einem SAX oder DOM Parser.


----------



## Zamurei (7. Feb 2012)

Wäre es vllt möglich das du mir das etwas genau eklären könntest.

habe schon versucht es an diesem Beispiel nachzuvollziehen, jedoch verstehe ich das nicht ganz

http://www.java-forum.org/xml-co/12...n-kompliziertes-search-replace-speichern.html



edit:
Das habe ich auch noch probiert jedoch scheint er da nicht mit dem encoding klar zu kommen, wie kann ich ihm denn sagen welches encoding er verwenden soll?

Javabeginners - XML-Dateilesen

mfg 
zamu


----------



## musiKk (7. Feb 2012)

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.


----------



## Marcinek (7. Feb 2012)

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 (7. Feb 2012)

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.


----------



## Marcinek (7. Feb 2012)

Zamurei hat gesagt.:


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



Weißt du, was das bedeutet?

Zeig mal bitte deinen bisherigen Code.


----------



## Zamurei (7. Feb 2012)

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


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


----------



## Zamurei (8. Feb 2012)

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 


```
getAttributeValue("nr");
```

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

Danke und Gruß
Zamu


----------



## c_sidi90 (8. Feb 2012)

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 
	
	
	
	





```
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);
  
}
```


----------



## Zamurei (8. Feb 2012)

Ah, super Danke hat funktioniert.

Gruß
Zamu


----------



## Zamurei (9. Feb 2012)

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 (10. Feb 2012)

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 (10. Feb 2012)

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


----------



## c_sidi90 (15. Feb 2012)

Genau


----------



## Zamurei (20. Feb 2012)

Hi,

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

Denn wenn ich das über 


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

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


----------



## Landei (20. Feb 2012)

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


----------

