Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    96

    [java]lettura di xml DOM xerces

    Ciao a tutti

    ho bisogno di un aiuto da chi è più esperto...
    mi piacerebbe tanto avere un esempio completo di come leggere tutti i nodi/attributi contenuti in un xml. Per esempio completo intendo dire dalla import alla lettura concreta dei valori.
    Ho cercato in giro e non riesco a trovare ciò che cerco.

    Ho un xml del tipo:

    <etichette>
    <etichetta nome="pippo" fileImm="img.gif" margineSx="3" margineDx="32"/>
    <etichetta nome="pluto" fileImm="img1.gif" margineSx="2" margineDx="30"/>
    <etichetta nome="paperino" fileImm="img2.gif" margineSx="3" margineDx="47"/>
    </etichette>

    nella mia funzione di Java ho scritto le seguenti righe:

    import org.apache.xerces.parsers.DOMParser;
    import org.w3c.dom.*;

    public class GestioneXML {


    //costruttore
    public GestioneXML(String nomeFileXml){
    //apro XML
    DOMParser parser = new DOMParser();
    Document doc= null;
    try{
    parser.setFeature "http://xml.org/sax/features/validation",true);
    parser.parse(nomeFileXml);
    doc=parser.getDocument();
    }
    catch(Exception e){
    System.err.println(e);
    }
    //ORA VORREI LEGGERE, E A METTERE IN UN ARRAY DA AVERE SEMPRE A DISPOSIZIONE, I VALORI DEI VARI NODI: nome, margini ecc... MA COME??????
    .......
    }

    Inizio a non capirci più nulla, vi ringrazio se potete aiutarmi!

    ciao
    Sili

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; ho buttato giù questo codice; non è il massimo ma come esempio dovrebbe andare.
    Ciao

    codice:
    import org.apache.xerces.parsers.DOMParser; 
    import org.w3c.dom.*; 
    
    public class GestioneXML { 
        
        DOMParser parser = new DOMParser();
        Document doc = null;
        //costruttore
        public GestioneXML(String nomeFileXml) {
    
            try {
                parser.setFeature("http://xml.org/sax/features/validation", true);
                parser.parse(nomeFileXml);
                doc = parser.getDocument();
                NodeList listaNodi = doc.getChildNodes();
                NodeList newListaNodi = null;
                Node theNode = null;
                NamedNodeMap attri = null;
                Node attributo = null;
                for( int i = 0; i < listaNodi.getLength(); i++ ){
                    
                    theNode = listaNodi.item(i);
                    System.out.println( "Nome nodo: "+ theNode.getNodeName() );
                    if( theNode.hasAttributes() ){
                        
                        attri = theNode.getAttributes();
                        for( int j = 0; j < attri.getLength(); j++ ){
                            
                            attributo = attri.item(j);
                            System.out.println( "Nome nodo: "+ attributo.getNodeName()+ " valore:  "+ attributo.getNodeValue() );
                        }
                    }
                    if(theNode.hasChildNodes()){
                        
                        newListaNodi = theNode.getChildNodes();
                        for( int g = 0; g < newListaNodi.getLength(); g++ ){
                            
                            Node aNode = newListaNodi.item(g);
                            if( aNode.getNodeType() != Node.TEXT_NODE ){
                                System.out.println("Nome nodo: " +
                                                   aNode.getNodeName());
                            }
                            if( aNode.hasAttributes() ){
            
                                NamedNodeMap ttri = aNode.getAttributes();
                                for( int l = 0; l < ttri.getLength(); l++ ){
            
                                    Node ttributo = ttri.item(l);
                                    if( ttributo.getNodeType() != Node.TEXT_NODE ){
                                        System.out.println("Nome nodo: " +
                                                ttributo.getNodeName() +
                                                " valore:  " +
                                                ttributo.getNodeValue());
                                    }
                                }
                            }                        
                        }
                    }
                }
            } catch (Exception e) {
                System.err.println(e);
            }
        }
    }
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    96
    grazie, ora provo...

    posso fare ancora una domanda?

    come faccio a fare riferimento ad una "variabile", nel mio caso un Array, istanziato come public nella calle Main????

    Mi spiego, ho una classe Main dalla quale parte il mio programmino, da questa viene lanciata la classe Finestra e la classe che legge l'xml. Nella classe che legge l'xml vorrei riempire l'array che ho dichiarato nella Main e che poi dovrò leggere anche dalla classe finestra, come devo fare? Ho pensato di preparare nella Main due metodi, uno per la lettura dell'array, l'altro per il popolamento dello stesso, ma in ogni caso non so come richiamare il metodo da un'altra classe.

    ancora grazie.
    ciao
    Sili

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.