Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329

    XML: quale libreria/api per leggere e/o scrivere un file XML?

    Salve, sto cercando di prendere mano con qualche api per poter leggere o scrivere file XML, ma non mi riesce molto bene.
    Ad esempio per cercare di leggere un file xml non capisco come mai non mi riesce bene,
    il mio codice è:
    XML:
    Codice PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <persone>
        <persona id="1">
            <nome>Fulvio</nome>
            <cognome>Cocco</cognome>
            <eta>32</eta>
            <citta italy="SUD">Catanzaro</citta>
        </persona>
        <persona id="2">
            <nome>Ciccio</nome>
            <cognome>Pippo</cognome>
            <eta>22</eta>
            <citta italy="NORD">Milano</citta>
        </persona>
    </persone>
    JAVA:
    Codice PHP:
    String pathXml "Persone.xml";
    DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();
    dbf.setValidating(false);

    Document doc dbf.newDocumentBuilder().parse("file.xml");
    NodeList persone doc.getElementsByTagName("persona");

    for(
    int i=0i<persone.getLength(); i++){
                    
    String persona persone.item(i).getNodeName();
                    
    Node childPersona persone.item(i);
                    for(
    int j=0j<persone.item(i).getChildNodes().getLength(); j++){
                        
    System.out.println("Persona "+(i+1)+": "+childPersona.getChildNodes().item(j).getNodeName() );
                    }
    //FOR j
                    
    System.out.println();
                }
    //FOR i 
    Vorrei uscisse:
    codice:
    Persona 1: nome
    Persona 1: cognome
    Persona 1: eta 
    Persona 1: citta
    
    Persona 2: nome
    Persona 2: cognome
    Persona 2: eta
    Persona 2: citta
    mentre viene fuori:
    codice:
    Persona 1: #text
    Persona 1: nome
    Persona 1: #text
    Persona 1: cognome
    Persona 1: #text
    Persona 1: eta
    Persona 1: #text
    Persona 1: citta
    Persona 1: #text
    
    Persona 2: #text
    Persona 2: nome
    Persona 2: #text
    Persona 2: cognome
    Persona 2: #text
    Persona 2: eta
    Persona 2: #text
    Persona 2: citta
    Persona 2: #text
    Ho capito solo che legge <Persona>(#text)<nome>...(#text)</nome>(nome)etc etc...
    cosa sbaglio, o c'è qualche altra libreria più semplice o migliore?
    Grazie.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il concetto è corretto.
    Quello che ho visto fare io e che noto che manca nel tuo codice è la chiamata al mentodo "normalizeDocument()" che va fatta dopo la costruzione dell'oggetto Document.

    codice:
    Document doc = dbf.newDocumentBuilder().parse("file.xml"); 
    doc.normalizeDocument();
    Per ottenere esattamente quello che chiedi, dovresti filtrare ciascun elemento, controllando che esso restituisca un valore per getNodeType() pari a Node.ELEMENT_NODE


    Io, personalmente, uso JDom.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Ora provo, ma con JDom posso scrivere e leggere un file XML?
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Donovant
    ma con JDom posso scrivere e leggere un file XML?
    Ovviamente sì.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Ok ci sono riuscito:
    Codice PHP:
    .
    .
    .
    if(
    childPersona.item(j).getNodeType() == Node.ELEMENT_NODE){
                            
    System.out.println("Persona "+(i+1)+": "+childPersona.item(j).getNodeName()+" : "+childPersona.item(j).getFirstChild().getNodeValue() );
                        }
    .
    .

    Grazie, andrò a vedere la libreria da te consigliata, ciao.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

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.