Probleme mit StAX und Java 1.6

Katfani

Grünschnabel
Hallo,

bisher habe ich mit Java 1.5.0_10 und StAX gearbeitet. Nun wollte ich auf Java 1.6.0_01 umstellen und nun funktioniert das einlesen meiner XML-Dateien nicht mehr richtig.

Beispieldatei:
<?xml version='1.0' encoding='UTF-8'?>
<Import>
<Maske ID="1067" Index1="#" Index2="##" Index3="" Index4="" Index5=""></Maske>
</Import>

Vorher habe ich mit folgendem Code
Code:
try
        {
            XMLEventReader parser = readxml(filepath);
            if(parser == null) 
            {
                return null;
            }

            ArrayList all_Loc = new ArrayList();

            while (parser.hasNext())
            {
                XMLEvent event = parser.nextEvent();
                int eventType = event.getEventType();
                switch (eventType)
                {
                    case XMLStreamConstants.END_DOCUMENT:
                        parser.close();
                        break;
                    case XMLStreamConstants.START_ELEMENT:

                        StartElement element = event.asStartElement();
                        Iterator attributes = element.getAttributes();
                        ArrayList Location = new ArrayList();
                        while (attributes.hasNext())
                        {
                            Attribute attribute = (Attribute) attributes.next();
                            ArrayList attribut = new ArrayList();
                            attribut.add(0, attribute.getName().toString());
                            attribut.add(1, attribute.getValue());

                            Location.add(attribut);
                        }
                        if (!Location.isEmpty())
                        {
                            all_Loc.add(Location);
                        }
                        break;
                    case XMLStreamConstants.CHARACTERS:
                        //Characters characters = event.asCharacters();
                        break;
                    case XMLStreamConstants.END_ELEMENT:
                        break;
                }
            }
            return all_Loc;
        }
        catch (XMLStreamException e)
        {
        }

diese ArrayList erhalten:
[[ID, 1067], [Index1, #], [Index2,## ], [Index3, ], [Index4, ], [Index5,]]

Mit Java 1.6 bekomme ich dann aber plötzlich diese ArrayList:
[[Index5, ], [Index4, ], [Index3, ], [Index2, ##], [ID, 1067], [Index1, #]]

Woran kann das liegen? Ich bin völlig ratlos..:confused:

Vielen Dank schon einmal..
 
Hi,

java 1.6 hat Paketnamen die sich mit denen von stax überschneiden. Das heißt es könnte sein, das dein Compiler nicht die Klassen der Stax-Api zieht, sondern von Java selbst.

Vielleicht hilft es die Stax.jar im classpath vor die jre zu legen.

Gruß
 
Huhu,

vielen Dank, das war es.. Mit Eclipse klappt dies nun.

Nur wenn ich die Anwendung über eine Jar starten will noch nicht. In dem Punkt bin ich einfach zu "Eclipseverwöhnt". Ich möchte jetzt das was ich in Eclipse gemacht habe mit einem Aufruf über die Kommandozeile nachvollziehen können.

:)
 
Huhu,

stimmt.. In der 1.6 brauche ich die jars gar nicht mehr.. Doch ohne die Jars kann ich StAX nicht mehr im classpath vorziehen und bekomme dann auch wieder die falsche Reihenfolge zurück..

:confused:
 
So.. Ich nochmal...

Es läuft jetzt.. Ich habe jetzt einfach mal dank deinem link den XMLStreamReader verwendet statt dem XMLEventReader und schon funktioniert es. :)

Danke.. :)
 
Zurück