Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    92

    jdom lettura elementi annidati

    Dovrei riuscire a leggere gli elementi di un file xml e memorizzarli in un array, dato il seguente file xml:

    <sequence name="sequenza 1">
    <element name="elemento 1">
    <element name="elemento 2"/>
    <element name="elemento 3"/>
    </element>
    <element name="elemento 4"/>
    </sequence>


    Ho fatto questa parte di codice:


    public static void main(String[] args) {
    try {

    SAXBuilder builder = new SAXBuilder();
    Document document = builder.build(new File("grafo.xml"));


    Element root = document.getRootElement();

    List children = root.getChildren();
    Iterator iterator = children.iterator();

    ArrayList elementi = new ArrayList();

    while(iterator.hasNext()){
    Element item = (Element)iterator.next();
    if(item.getName()=="element")
    elementi.add(item.getAttributeValue("name"));
    }
    for (int i=0 ; i<elementi.size() ; i++) {
    System.out.println(elementi.get(i)+"\n");
    }

    }
    catch (Exception e) {
    System.err.println("Errore durante la lettura dal file");
    e.printStackTrace();
    }

    }

    come si intuisce però mi memorizza solo gli elementi di primo livello, cioè elemento 1 ed elemento 4. come faccio a prendere in considerazione anche gli elementi annidati. ovviamente il numero di annidamenti potrebbe anche essere maggiore di 2.
    Grazie dell'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    92
    ho risolto, per gli interessati:

    public static void main(String[] args) {
    try {

    SAXBuilder builder = new SAXBuilder();
    Document document = builder.build(new File("grafo.xml"));


    Iterator iterator = document.getDescendants();

    ArrayList elementi = new ArrayList();

    iterator = document.getDescendants(new ElementFilter());
    while(iterator.hasNext()){
    Element item = (Element)iterator.next();
    if(item.getName()=="element")
    elementi.add(item.getAttributeValue("name"));
    }
    for (int i=0 ; i<elementi.size() ; i++) {
    System.out.println(elementi.get(i)+"\n");
    }

    }
    catch (Exception e) {
    System.err.println("Errore durante la lettura dal file");
    e.printStackTrace();
    }

    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.