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