derwunner Geschrieben 22. März 2012 Teilen Geschrieben 22. März 2012 Hallo, bei der XML Verarbeitung mit Java blicke ich noch nicht komplett durch. Die Erklärungen, die man so findet im Internet sind auch nicht gerade die besten, da fehlt mir die Hauptsache. Ich hoffe, Ihr könnt mir helfen. Also ich habe einen XML String, der wie folgt aussieht (ohne Zeilenumbrüche): <?xml version='1.0' encoding='UTF-8'?> <database> <dataset> <data name='name'>wert</data> . . . </dataset> <dataset> <data name='name'>wert</data> . . . </dataset> </database> Mein Java Code zum Abfragen der einzelnen Werte sieht so aus: XMLInputFactory factory = XMLInputFactory.newInstance(); Reader xmlreader = new StringReader(zeile); try { XMLStreamReader xmlStreamReader = factory .createXMLStreamReader(xmlreader); while (xmlStreamReader.hasNext()) { xmlStreamReader.next(); if (xmlStreamReader.getEventType() == XMLStreamReader.START_ELEMENT && xmlStreamReader.getLocalName().equalsIgnoreCase("data")) { // System.out.println(xmlStreamReader // .getLocalName()); String name = xmlStreamReader.getAttributeValue(null, "name"); String value = xmlStreamReader.getText(); map.put(name, value); } else if (xmlStreamReader.getEventType() == XMLStreamReader.START_ELEMENT && xmlStreamReader.getLocalName().equalsIgnoreCase("dataset")) { saetze.add(map); map = new HashMap(); } } } catch (XMLStreamException e) { e.printStackTrace(); } Dabei bekomme ich beim Durchlaufen folgende Exception: java.lang.IllegalStateException: Current state START_ELEMENT is not among the statesCHARACTERS, COMMENT, CDATA, SPACE, ENTITY_REFERENCE, DTD valid for getText() at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getText(XMLStreamReaderImpl.java:1067) In der Zeile bei map.put(name, value); Ich weiß aber leider nicht warum, und wie ich das ändern könnte. Die Verarbeitungsweise habe ich aus dem Java ist auch eine Insel Tutorial (Listing 18.15). MFG derwunner Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Servior Geschrieben 22. März 2012 Teilen Geschrieben 22. März 2012 XMLStreamReader (Java Platform SE 6) getText ist für START_ELEMENT nicht gültig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
derwunner Geschrieben 22. März 2012 Autor Teilen Geschrieben 22. März 2012 Dankeschön! Mit .getElementText() geht es nun. Ein kleiner Fehler war noch drin: Es ist sinnvoll die HashMap mit null zu initialisieren und die HashMap der ArrayList nur anzuhängen, wenn ungleich null. Sonst würde die erste HashMap in der ArrayList keine Werte enthalten. Thema geklärt MFG derwunner Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.