JAXB und STAX

HakBak

Aktives Mitglied
Hallo,
ich versuche mich gerade daran JAXB mit STAX zu verbinden nur leider bekomme ich jedes Mal eine
Java:
 javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"ROW"). Expected elements are <{}ROWSET>

Meine XML Datei sieht wie folgt aus:

Java:
<?xml version="1.0" encoding="UTF-8"?>
<ROWSET xsi:noNamespaceSchemaLocation="test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ROW num="1">
    <Name1>2424</Name1>
    <Name2>2010-05-19T09:30:22</Name2>
  </ROW>

  <ROW num="2">
    <Name1>2424</Name1>
    <Name2>2010-05-19T09:30:22</Name2>
  </ROW>

  <id>2603805789</id>
</ROWSET>

Die passenden klassen habe ich mit der xjc.exe durch das passende Schema, welches mit gestellt wurde erstellen lassen.

Nun ist es so, dass das unmarshalling prinzipiell klappt, nur sollten die xml-datei zu groß werden, wollte ich das ganze mit Stax verbinden, damit alles noch "speicherfreundlich" ablaufen kann.

Aber ich bekomme eben immer die oben genannte Fehlermeldung.
Hier hab ich mal meinen code:

Java:
public void testParse() throws XMLStreamException,JAXBException, IOException {
		XMLInputFactory xFactory = XMLInputFactory.newInstance();
		FileReader fr = new FileReader("test.xml");
		XMLEventReader xReader = xFactory.createXMLEventReader(fr);
		EventFilter filter = new EventFilter() {
			public boolean accept(XMLEvent event) {
				return event.isStartElement();
			}
		};
		XMLEventReader xmlfer = xFactory.createFilteredReader(xReader, filter);
		StartElement e = (StartElement) xmlfer.nextEvent();
		JAXBContext jc = JAXBContext.newInstance("test"); //das Package in dem die von xjc erzeugten Klassen liegen ROWTYPE ROWSETTYPE und ObjectFactory
		Unmarshaller um = jc.createUnmarshaller();;
		while (xmlfer.peek() != null) {
			Object o = um.unmarshal(xReader); //hier krachts mit der oben genannten Fehlermeldung
			...
                        ...
		}

		fr.close();
	}

Ich hab schon viel gesucht, aber bisher konnte ich keine passende Lösung finden, vielleicht könnt ihr mir helfen.

Danke schonmal!
 
Was soll das denn bringen? Wenn du die komplette XML in ein Objektmodell laden willst, muss doch sowieso alles in den Speicher. STAX bringt dir nur etwas wenn du Streaming basiert arbeiten kannst.
Warum eigentlich JAXB und nicht das wesentlich bessere EMF?
Eclipse Modeling - EMF - Home
 

Neue Themen


Zurück
Oben