XML-Datei schreiben

Spaceman85

Mitglied
Habe folgendes Problem.
Wenn ich meiner Methode nur ein Element übergebe, sprich vector.size() =1 dann wird der xml tag geschrieben und ich habe ein korrektes xml Dokument, wenn aber der die Elemente im Vector >1 sind dann schreibt er die tags zwar auch, aber beim aufrufen der xml Datei wird mir gesagt das diese nicht korrekt sei und so ist sie unbrauchbar.

Ich verstehe nicht wo das Problem liegt!

public void writeXML(Vector<FilmData> fd) throws FileNotFoundException, XMLStreamException{

out=new FileOutputStream("film.xml");
factory=XMLOutputFactory.newInstance();
writer = factory.createXMLEventWriter(out);
eventFactory = XMLEventFactory.newInstance();
endDocument = eventFactory.createEndDocument();

//header
header = eventFactory.createStartDocument();

writer.add( header );
for(int i=0;i<fd.size();i++){
startElement = eventFactory.createStartElement( "", "", "film" );
titleAttribut = eventFactory.createAttribute( "titel", fd.elementAt(i).getName() );
genreAttribut = eventFactory.createAttribute( "genre", fd.elementAt(i).getGenre() );
yearAttribut = eventFactory.createAttribute( "jahr", fd.elementAt(i).getYear() );
placeAttribut = eventFactory.createAttribute( "mappe", fd.elementAt(i).getPlace() );
endElement = eventFactory.createEndElement( "", "", "film" );
writer.add( startElement );
writer.add(titleAttribut);
writer.add( genreAttribut );
writer.add( yearAttribut );
writer.add( placeAttribut );
writer.add( endElement );
System.out.println(fd.elementAt(i).getName());
}

writer.add( endDocument );
writer.close();
}
 
Hey,

benutze für den Quellcode den CODE Tag; am besten in der jeweiligen Sprache ;)


Wie sehen denn die 2 XML Dateien aus?

Habe kurz danach gesucht und folgendes gefunden

http://java.sun.com/javaee/5/docs/tutorial/doc/bnbem.html#bnbeq

Java:
XMLOutputFactory output = XMLOutputFactory.newInstance();
XMLStreamWriter writer = output.createXMLStreamWriter( ... );
writer.writeStartDocument();
writer.setPrefix("c","http://c");
writer.setDefaultNamespace("http://c");
writer.writeStartElement("http://c","a");
writer.writeAttribute("b","blah");
writer.writeNamespace("c","http://c");
writer.writeDefaultNamespace("http://c");
writer.setPrefix("d","http://c");
writer.writeEmptyElement("http://c","d");
writer.writeAttribute("http://c","chris","fry");
writer.writeNamespace("d","http://c");
writer.writeCharacters("Jean Arp");
writer.writeEndElement();
writer.flush();
Den Befehl add() finde ich nirgends in der JAVADoc

Wie lautet denn der andere Code?
Bzw als was hast du genreAttribut definiert?

mfg
bo
 
Zuletzt bearbeitet von einem Moderator:
Wenn ich 2 Elemente überge sieht die Xml folgendermaßen aus:

1: <?xml version="1.0"?>
<film titel="Herr der RInge" genre="Fantasy" jahr="2002" mappe="2"></film><film titel="Halloween" genre="Horror" jahr="1988" mappe="2"></film>

XML-Interpretation fehlgeschlagen: Syntaxfehler (Zeile: 1, Zeichen: 95) ?

Bei nur einen Element:

<?xml version="1.0"?><film titel="Herr der RInge" genre="Fantasy" jahr="2002" mappe="2"></film>

add(), weil ich den EventWriter nutze und nicht den StreamWriter

genreAtribut etc sind vom Typ XMLEvent
 
Zuletzt bearbeitet:
Dir fehlt eine übergeordnete "Gruppe" wie zB "filme"

http://de.wikipedia.org/wiki/Xml

XML:
  <?xml version="1.0" ?> 
- <filme>
  <film titel="Herr der RInge" genre="Fantasy" jahr="2002" mappe="2" /> 
  <film titel="Halloween" genre="Horror" jahr="1988" mappe="2" /> 
  </filme>
 
Zuletzt bearbeitet von einem Moderator:
Zurück