JAVA und DOM, probleme beim einfügen von elementen ??????

  • Themenstarter Themenstarter reymond
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

reymond

Gast
hallo zusammen

bin an einem einfachen beispiel dran. ich möchte einem xml file ganz einfach zwei elemente und text anhängen, was gemäss diversen beispielen einfach aussieht.
ich meinte mein java code sollte dies auch tun, aber wenn ich die datei nach dem ausführen des codes öffne hat sich nichts getan. der code wir aber fehlerfrei asugeführt. warum schreibt er mir nichts in die datei und stimmt mein code....?
herzlichen dank an alle.....super forum !!!
ray

mein beispiel xml fiel:

Code:
Import 
Row 
ID "4" ID 
/Row 
*****neu eelemente********* 
Row 
ID "test" ID 
/Row 
*****neue elemente********* 
/Import
für dieses beispiel hab ich folgenden java code:

Code:
import java.io.File; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 

import org.w3c.dom.CharacterData; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.xml.sax.SAXParseException; 

public class ParserDom 
{ 
static Document document; 
String value = "test"; 

public ParserDom() 
{ 

} 

public void parse(String fileIn) 
{ 

File datei=new File("f:\\ray\\schule\\OOP\\konverter_inno\\"+ fileIn +".xml"); 
boolean laden=datei.canRead(); 
if (laden) 
{ 
try 
{ 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
document = builder.parse( new File("f:\\ray\\schule\\OOP\\konverter_inno\\"+ fileIn +".xml") ); 

if (fileIn.equals("shcsResultate")) 
{ 
Element root = document.getDocumentElement(); 
Node firstRow = root.getFirstChild(); 

// neue Elemente erstellen und ins Document einfügen 
Element newRow = document.createElement("Row"); 
Element id = document.createElement("ID"); 

CharacterData text = document.createTextNode(value); 
id.appendChild(text); 

newRow.appendChild(id); 

root.insertBefore(newRow, firstRow); 

} 

} 

catch (SAXParseException error) 
{ 
System.out.println("\n+++Parse Error+++"+ "\nZeile: " + error.getLineNumber() + "\nDatei: " + error.getSystemId()); 
System.out.println("\n" + error.getMessage() ); 

} 

catch (Throwable t) 
{ 
t.printStackTrace(); 
} 

} 
else 
{ 
System.out.println("datei existiert nicht!"); 

} 


} 

}
 
Hi,

DOM arbeitet im Hauptspeicher. D.H. dein XML wird in den Hauptspeicher geladen, dort verändert aber nicht auf die Platte zurück geschrieben. Zumindest konnte ich das bei deinem Code nicht finden.
 
ahhh so, hab ich nicht gewusst. mhhh muss ich den code korrigieren damit er mir das file verändert...?

habe dazu nichts gefunden :-(
herzlichen dank für hilfe, echt klasse...¨!!!

ray
 
hallo, dieses beispiel hab ich schon mal studiert und finde leider keinen zwingenden unterschied das es mit meinem code nicht funktionieren müsste. ich hole das file füge was hinzu und schliessen oder eine save kann ja nicht machen. er findet das file kann es parsen, nur einfügen geht nicht...? bin leider auch ein anfänger sodass ich vielleicht am falschen ort suche........weisst du weiter .....danke vielmal ray
 
In diesem Abschnitt wird zurück geschrieben, wie es darüber steht. Zwar in eine Neue Datei, aber du kannst ja auch die alte angeben.


// ---- Use a XSLT transformer for writing the new XML file ----
Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource( document );
FileOutputStream os = new FileOutputStream( new File( argv[1] ) );
StreamResult result = new StreamResult( os );
transformer.transform( source, result );

Davon sehe ich in deinem Code allerding nichts.
 
mein gott, das dieses file überschrieben muss, hätte ich wohl nie heraus gefunden.
super herzlichen dank, es funktioniert!!!

fazit:
wenn ich etwas in einem xml file änder muss, muss ich das file immer überschreiben....

danke an alle, ein mega klasse forum!!!!! ray
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben