XML Modifizieren
lima-city → Forum → Programmiersprachen → Java
beispiel
code
datei
deklaration
dokument
element
ergebnis
file
invaliden aufbau
item
jemand
manipulation
markup
resultat
string
tag
tausend
trick
umformung
unterschiedliche namen
- 
    
    Hallo zusammen,
 
 ich habe folgende tag/beispiel">Beispieldatei mit mehreren tausend "item" tags:
 
 beispiel.xml
 <?xml version='1.0'?> <item>...</Item> <item>...</Item> <item>...</Item> ...
 
 Nun würde ich gerne alle "item" tags in einem "itmes" tag einbetten.
 
 beispiel-angepasst.xml
 <?xml version='1.0'?> <items> <item>...</Item> <item>...</Item> <item>...</Item> ... </items>
 
 Kann mir jemand ein Code-Beispiel zeigen, um die xml Datei entsprechend zu modifizieren?
 
 
 EDIT:
 Folgendes wurde probiert, was leider nicht funktioniert, da die erste Datei einen invaliden Aufbau hat 
 => Markup im Dokument nach dem Root-Element muss ordnungsgemäß formatiert sein.
 
 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("beispiel.xml")); Element newRoot = doc.createElement("items"); newRoot.appendChild(doc.getFirstChild()); doc.appendChild(newRoot); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(new DOMSource(doc), new StreamResult(new File("beispiel-angepasst.xml")));
 
 Gibt es einen Trick, die beispiel.xml dennoch zu editieren bzw. zu validieren, auch wenn diese einen invaliden Aufbau besitzt?
 Beitrag zuletzt geändert: 1.1.2016 22:55:39 von hswlab
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 
- 
    
    Du könntest nach der XML-Deklaration (oder falls es keine gibt direkt an den Anfang) dein Start-Tag
 einfügen und an das Ende des Dokuments ein<items>
 anhängen. Dann lässt sich das Ergebnis problemlos parsen. Die »Umformung« wäre hier also lediglich eine String-Manipulation.</items>
- 
    
    Wenn Die Datei nur etwas ähnliches wie XML enthält (mehrere Root-Elemente - das möchtest du anscheinend korrigieren; öffnendes und schließendes Tag haben unterschiedliche Namen), kann es nicht als XML geparst werden.
 
 Ich sehe jetzt nur wie hackyourlife die Möglichkeit, das Ergebnis durch Stringmanipulation zu erreichen.
- 
    
    Danke euch. :-)
 Der Vollständigkeit halber, hier nochmal meine Lösung zum Problem.
 Ich habe die Datei mit RandomAccessFile bearbeitet. Damit lässt sich der Inhalt einer Datei überschreiben.
 Dabei musste leider die erste Zeile "<?xml version='1.0'?>" dran glauben, was aber nicht so schlimm ist.
 
 RandomAccessFile f = new RandomAccessFile(new File("beispiel.xml"), "rw"); f.seek(0); f.write("<items> ".getBytes()); f.seek(f.length()); f.write("\n</items>".getBytes()); f.close();
 
 Resultat:
 <items> <item>...</Item> <item>...</Item> <item>...</Item> ... </items>
 Beitrag zuletzt geändert: 3.1.2016 16:38:48 von hswlab
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 

