Geändertes XML-File wieder abspeichern.

Status
Nicht offen für weitere Antworten.

Sneakizzel

Mitglied
Mahlzeit zusammen,

ich öffne eine bestehende XML-Datei, ersetze darin ein Tag und möchte dies wieder abspeichern, der Code sieht etwa wie folgt aus:

Code:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File("layout.xml").toURL().toString());

ersetzeTag();	

speichereXMLFile();

Ich bräuchte also Hilfe bei der Methode speichereXMLFile(). Eigentlich gar nicht so schwer, doch min Problem liegt darin das ich dies mit Java 1.3.1_08 und JAXP 1.0.1 realisieren muss. Vielleicht hat einer von Euch eine Idee. Die API zu JAXP 1.0.1 könnt Ihr finden unter:
Link API JAXP 1.0.1

Ich sag schon mal Danke im Voraus
sneaker
 

foobar

Top Contributor
Du mußt den Baum einfach einem Transformer übergeben:
http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/Transformer.html#transform(javax.xml.transform.Source,%20javax.xml.transform.Result)

Ich weiß aber nicht ob es das in Java 1.3 auch schon gab, also einfach mal testen.
 

Sneakizzel

Mitglied
Das habe ich schon ausprobiert, ist (so wie ich das sehe) nicht in Java 1.3.1 und der entsprechenden JAXP Version enthalten. Trotzdem Danke
sneaker
 

foobar

Top Contributor
@muckelzwerg Hmm, das sieht aber gefährlich aus. Es muß doch auch irgendowie direkt über die API funktionieren.
 

Sneakizzel

Mitglied
Mhh, ich hatte schon befürchtet das es auf so etwas heraus laufen wird. Was mich nicht wirklich glücklich macht.

sneaker
 

muckelzwerg

Bekanntes Mitglied
Wieso "muss" das gehen ?
Egal was man sich ansieht, überall klingt durch, dass es eben nicht geht.
JAXP 1.1 hatte als neues Feature die Transformatoren.
http://www.deitel.com/books/xmlHTP1/xmlhtp1_faq.html#Chapter 8 examples

Mit fürheren Versionen gibt es noch die Möglichkeit die XMLDocument Klasse
von Crimson zu verwenden.
http://www-nlp.stanford.edu/local/talks/sax-dom-tutorial/DOMExample.java
Auszug :
Code:
    /** Construct Document (i.e. XML node tree) from data model and
     *  ask it to write itself out.
     *
     *  Note 1: Since JAXP 1.1, there is no simple, documented way to
     *  write out a Document object.  This code uses an undocumented
     *  trick.  There is a supported way via the XSLT library, but it
     *  is far more clumsy than this two-line trick.
     *
     *  Note 2: Another strategy would be just to println() the XML
     *  text straight from our data model.
     */
    public void writeXML(OutputStream o) {
        try {
            Writer out = new OutputStreamWriter(o);
            Document doc = createDocument();
            
            // Here's the trick:
            // 1. Downcast Document to a Crimson XmlDocument
            org.apache.crimson.tree.XmlDocument x =
                (org.apache.crimson.tree.XmlDocument) doc;

            // 2. XmlDocument knows how to write itself out -- woo hoo!
            x.write(out, "UTF-8");
            out.close();
        }
        catch (Exception e) {
            System.err.println("Save XML err:" + e);
        }
    }


-- -- muckelzwerg
 

Sneakizzel

Mitglied
Wieso "muss" das gehen ?

Ich wollte sagen das ich es mit diesen Komponenten realisieren möcht/muss, ob bzw. wie einfach es damit geht weiss ich nicht. Es scheint aber das es ein großer Aufwand mit JAXP 1.0.1 ist im Gegensatz zu JAXP 1.1 aber ich hab nun mal nur die 1.0.1 zur Verfügung.

sneaker
 

muckelzwerg

Bekanntes Mitglied
Sorry, ich meinte foobar.

So groß finde ich den Aufwand eigentlich nicht.
Falls Du Crimson verwenden darst, sind es zwei Zeilen,
Falls nicht, hast Du eine fast ferige Funktion an der Hand.

Muss das überhaupt JAXP sein ?
Wenn Du bloß ein Tag ersetzen willst, reichen ja auch regexp.

-- -- muckelzwerg
 

Sneakizzel

Mitglied
Mhh, erstmal Danke für die Antworten,

ich hab das Problem wie folgt gelöst:

Code:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File("layout.xml").toURL().toString());

ersetzeTag(); 

NodeList list = doc.getElementsByTagName("<<äußerster TAG");
			
for(int i=0; i < list.getLength(); i++){
	file = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + list.item(i);
}

So wird das ganze XML-Gerödel als String ausgegeben ledeglich <?xml version="1.0" encoding="utf-8"?> muss noch davor geprügelt werden. Tja und vom String isses zum File ja auch nicht mehr weit :D .

Danke für Eure Hilfe
sneaker
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JAXB und java.nio.file.Path XML & JSON 4
Trèfle Formatierung v. JSON File XML & JSON 7
L login - Java IOException jaas.config File or Directory not present XML & JSON 1
G Probleme mit Jsoup in .jar File XML & JSON 11
K JAR-File mit XML-Datei XML & JSON 1
JBoby Yaml File lesen und in Objekte umwandel (SnakeYAML / YamlBeans) XML & JSON 0
O XML Zugriff auf Entity File XML & JSON 0
B xsd-Datei ins jar file XML & JSON 5
S XLSX-File NoSuchMethodError XML & JSON 7
M SEPA XML file XML & JSON 11
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
S XML file lässt sich in Eclipse nicht erstellen XML & JSON 2
M <root> node in bestehendes XML-File XML & JSON 8
jstei001 .xsd File wärend der Laufzeit einlesen und XMl rausschreiben XML & JSON 5
L Datenstruktur in XML-File schreiben XML & JSON 2
Q XML-File als Objekt in Java XML & JSON 6
G DXF-File schreiben XML & JSON 17
GUI-Programmer java.io.File aus .jar beziehen XML & JSON 6
B XML file erstellen und in lesbarer form speichern XML & JSON 2
M XML File generieren XML & JSON 3
S Aus XML-File eine Baumstruktur erzeugen XML & JSON 5
N XML File aus Internet korrekt mit absätzen formatiert abspeichern XML & JSON 10
J xmlParser/-Writer: DTD in seperates File auslagern XML & JSON 4
C Xml file gegen eine DTD validieren XML & JSON 3
G Problem beim schreiben von XML in eine File XML & JSON 2
S Premature end of file XML & JSON 7
T File öffnen XML & JSON 6
B XML file für schtasks XML & JSON 5
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
G Xml File schematisch auslesen XML & JSON 2
J File objekt in xml speichern? XML & JSON 12
G XMLEncoder: discarding statement LinkedList.add(File) XML & JSON 16
X XML File auslesen/parsen u. in ne Hashmap speichern XML & JSON 2
M Unhierarchisches XML-File mit DOM-Parser auswerten XML & JSON 5
M XML File während Applet-Start auslesen? XML & JSON 10
X Einzelne Tags rausnehmen aus einem großen XML-file XML & JSON 4
E XOM setzen von XML-Schema declaration beim erzeugen XML-File XML & JSON 2
M XSL-File für Transformation verwenden XML & JSON 3
M XML-File verabeiten XML & JSON 19
A XML-File auslesen, alles leer? XML & JSON 2
D XML-file mit Eclipse erstellen + Namespaces XML & JSON 2
A html-File nach txt-File konvertieren XML & JSON 15
K XML to file geht nicht :( XML & JSON 4
A Internetinhalte auslesen und in einem XML-File speichern XML & JSON 4
T select-statement aus mysql in ein xml-file umwandeln XML & JSON 3
J XML File updaten XML & JSON 2
A XML-file an der Konsole ausgeben XML & JSON 4
D In ein XML File meinStyleSheet.css eintragen? XML & JSON 9
J Client für WebService programmieren (aus WSDL-File) XML & JSON 15
R wie kann ich ein xml file in einen string einlesen? XML & JSON 2
M *.group() in File auslesen XML & JSON 4
A XML-File ausgeben XML & JSON 2
W aus XML-File gelesenes als Methodenaufruf verwenden XML & JSON 5
T Elemente aus XML-File löschen (JDom) XML & JSON 9
T [JDOM] XML File, neue Daten hinzufügen XML & JSON 5
D Aus Java XML-File an PHP-Skript senden: Encodingproblem? XML & JSON 3
T Prob: Auslesen XML File mit JDOM XML & JSON 2
B DOM oder HTML File drucken "wie ein Browser es zeigen w XML & JSON 3
Avalon JSON flatten und wieder in DTO konvertieren XML & JSON 21
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
R XML eingelesen und wieder geschrieben... Fehler XML & JSON 7
F XML erzeugen aus JTree und wieder einlesen... XML & JSON 6
D JTree aus XML Datei erstellen & JTree wieder in XML spei XML & JSON 4
S Mal wieder Sax was sonst ;( XML & JSON 5
P XML - mal wieder. XML & JSON 10
N Objekte via XML speichern und wieder einlesen XML & JSON 12

Ähnliche Java Themen

Neue Themen


Oben