dans ce code Java, dans le premier if (dans la boucle while) on prend l'item et ses attributs,
on continue à vérifier les "if" mais, aucun des "if" ne marche. (dîtes moi si je me trompe)
on revient donc au "while",
on arrive à la balise suivante "mode" grâce à "nextEvent",
on recommence donc, le 1er "if" global ok, le 1er sous-"if" ne fonctionne pas (ITEM) on le saute, on arrive au 2e "if" (MODE), mais là on recommence avec un ---> event = eventReader.nextEvent(); . Et on refait ce nextEvent() à chaque fois pour chaque nouvelle balise, ce que je ne comprends pas, car avant les "if", on a déjà appelé la balise suivante avec ce nextEvent ..
public List<Item> readConfig(String configFile) {
List<Item> items = new ArrayList<Item>();
try {
// First create a new XMLInputFactory
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
// Setup a new eventReader
InputStream in = new FileInputStream(configFile);
XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
// Read the XML document
Item item = null;
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
StartElement startElement = event.asStartElement();
// If we have a item element we create a new item
if (startElement.getName().getLocalPart() == (ITEM)) {
item = new Item();
// We read the attributes from this tag and add the date
// attribute to our object
Iterator<Attribute> attributes = startElement
.getAttributes();
while (attributes.hasNext()) {
Attribute attribute = attributes.next();
if (attribute.getName().toString().equals(DATE)) {
item.setDate(attribute.getValue());
}
}
}
if (event.isStartElement()) {
if (event.asStartElement().getName().getLocalPart()
.equals(MODE)) {
event = eventReader.nextEvent();
item.setMode(event.asCharacters().getData());
continue;
}
}
if (event.asStartElement().getName().getLocalPart()
.equals(UNIT)) {
event = eventReader.nextEvent();
item.setUnit(event.asCharacters().getData());
continue;
}
if (event.asStartElement().getName().getLocalPart()
.equals(CURRENT)) {
event = eventReader.nextEvent();
item.setCurrent(event.asCharacters().getData());
continue;
}
if (event.asStartElement().getName().getLocalPart()
.equals(INTERACTIVE)) {
event = eventReader.nextEvent();
item.setInteractive(event.asCharacters().getData());
continue;
}
}
// If we reach the end of an item element we add it to the list
if (event.isEndElement()) {
EndElement endElement = event.asEndElement();
if (endElement.getName().getLocalPart() == (ITEM)) {
items.add(item);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
return items;
}
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.