Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Leggere da file xml

  1. #1

    Leggere da file xml

    Mi sono avvicinato da pochi giorni a java ed ho incontrato subito un problema con i file xml.
    Sul forum ho visto tante discussioni sull'argomento ma non riesco a capire come affrontare la questione.

    Il mio programma deve semplicemente leggere un file xml e riempire una jtable con i dati letti...ora come parser vorrei utilizzare sax ma non riesco a capire come fare a leggere il file e poi recuperare ciò che è stato letto...qualcuno mi potrebbe spiegare passo passo cosa dovrei fare?

  2. #2
    Ciao,
    ti passo una piccola classe java che legge XML e lo scorre nodo per nodo fino a trovare solo le foglie del document XML.
    Con foglie intendo tutti quei nodi che non hanno figli.

    -------
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.StringBufferInputStream;
    import java.util.ArrayList;
    import java.util.List;

    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;

    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;

    public class XmlReader {

    public static List xPathArray ;

    public static Object[] getXPath(String xml){
    InputStream is = new StringBufferInputStream(xml);
    xPathArray = new ArrayList();

    try {
    DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBu ilder();
    Document document = db.parse(new InputSource(is));
    Element root = document.getDocumentElement();
    XmlReader.walkTree(root);
    }
    catch (SAXException e) { e.printStackTrace(); }
    catch (ParserConfigurationException e){ e.printStackTrace(); }
    catch (IOException ee) { ee.printStackTrace(); }
    return xPathArray.toArray();
    }

    private static void findParents(Element nd,String str){
    String t = new String(str);
    Element e = nd;
    t = e.getParentNode().getNodeName() + "/" + t;

    if(e.getParentNode() != null && e.getParentNode().getNodeType() == 1){
    findParents((Element)e.getParentNode(),t);
    }
    else{
    if(!xPathArray.contains(t.replaceFirst("#document" ,"")))
    xPathArray.add(t.replaceFirst("#document",""));
    }
    }

    private static void walkTree(Element node){
    String t = new String(node.getNodeName());

    if(node.getParentNode() != null && (!node.hasChildNodes() || node.getFirstChild().getNodeType() == 3) ){
    findParents((Element)node,t);
    }

    if(node.hasChildNodes()){
    for(int i=0; i<node.getChildNodes().getLength();i++){
    if(node.getChildNodes().item(i).getNodeType() == 1)
    walkTree((Element)node.getChildNodes().item(i));
    }
    }
    }

    public static void main(String[] args){
    String xmlFile = "<pippo><ciao><tag/></ciao><dona>56</dona><beppe><mirko/></beppe><beppe>ii</beppe><nano>1</nano></pippo>";
    Object[] arr = XmlReader.getXPath(xmlFile);

    for(int i=0; i<arr.length;i++){
    System.out.println(arr[i]);
    }
    }

    }


    ------

    Con qualche system.out riuscirai a capire bene i vari passaggi.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Grazie mille per la classe....ma non sono molto pratico di java e non ho capito che devo fare...io istanzio la classe e poi come procedo?

  4. #4
    Se dai un occhio al codice,
    c'è il metodo main() ...

    Quindi la puoi già eseguire.

    Ti consiglio di studiartela un attimo prima di utilizzarla magari in un progetto.

    Se utilizzi un editor tipo eclipse vai nel menu Run e clicca su Run as Application.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

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.