Hallo,
ich habe mich seit kurzem in das Thema "StaX" eingearbeitet (Anfänger).
Ich habe eine XML Datei, die wie folgt aussieht:
[XML]<start version="1.0.0">
<Named>
<Name>name1</Name>
<User>
<Name>name2</Name>
<Title>Title2</Title>
<Type>
<Name>Name3</Name>
<Title>TypeTitle</Title>
[...]
</Type>
</User>
</Named>
</start>[/XML]
Ich möchte nun die XML Datei Parsen und die Werte (je nach dem) entsprechend ändern. Ich kann zwar die XML Datei mit StaX auslesen, aber nicht die doppelten Einträge <Name>. Der erste Wert wird von dem letzten überschrieben. Java-Code sieht wie folgt aus:
Kann mir einer einen Tipp geben, wie ich es am besten Parsen kann? Vielleicht doch nicht mit StaX?
Viele Grüße
Andy
ich habe mich seit kurzem in das Thema "StaX" eingearbeitet (Anfänger).
Ich habe eine XML Datei, die wie folgt aussieht:
[XML]<start version="1.0.0">
<Named>
<Name>name1</Name>
<User>
<Name>name2</Name>
<Title>Title2</Title>
<Type>
<Name>Name3</Name>
<Title>TypeTitle</Title>
[...]
</Type>
</User>
</Named>
</start>[/XML]
Ich möchte nun die XML Datei Parsen und die Werte (je nach dem) entsprechend ändern. Ich kann zwar die XML Datei mit StaX auslesen, aber nicht die doppelten Einträge <Name>. Der erste Wert wird von dem letzten überschrieben. Java-Code sieht wie folgt aus:
Java:
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
InputStream in = new FileInputStream(file);
XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
Item item = null;
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
StartElement startElement = event.asStartElement();
if (startElement.getName().getLocalPart().equalsIgnoreCase(Named)) {
item = new Item();
}
if (item != null) {
if (event.asStartElement().getName().getLocalPart().equalsIgnoreCase(NAME)) {
event = eventReader.nextEvent();
item.setName(event.asCharacters().getData());
continue;
}
if (event.asStartElement().getName().getLocalPart().equalsIgnoreCase(TITLE)) {
event = eventReader.nextEvent();
item.setTitle(event.asCharacters().getData());
continue;
}
}
}
if (event.isEndElement()) {
EndElement endElement = event.asEndElement();
if (endElement.getName().getLocalPart().equalsIgnoreCase(Named)) {
items.add(item);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
return items;
Kann mir einer einen Tipp geben, wie ich es am besten Parsen kann? Vielleicht doch nicht mit StaX?
Viele Grüße
Andy