Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di elby
    Registrato dal
    Jan 2003
    Messaggi
    15

    Java - Errori nella lettura da xml col parser Dom

    Sto usando il parser Dom per leggere da un file di configurazione xml del genere:
    <root>
    <certificate>
    <type>tizio</type>
    ...
    </certificate>
    <root>

    Usando questo codice:
    //reading from xml files
    try
    {
    //reading from XML config file general
    DocumentBuilderFactory factory1 = DocumentBuilderFactory.newInstance();
    factory1.setValidating(false);
    //create the builder and parse the file
    Document doc1 = factory1.newDocumentBuilder().parse(new FileInputStream(System.getProperty("user.dir")+ "/" + configfilepath));
    WorkingDirectory =
    doc1.getDocumentElement().getElementsByTagName("Wo rkingDirectory").item(0).getFirstChild().getNodeVa lue().trim();
    PathCertificatesDB = doc1.getDocumentElement().getElementsByTagName("Ce rtificatesDatabase").item(0).getFirstChild().getNo deValue().trim();

    System.out.println(PathCertificatesDB + " " + WorkingDirectory);
    /* //reading from the XML Certificates Database
    DocumentBuilderFactory factory2 = DocumentBuilderFactory.newInstance();
    factory2.setValidating(false);
    Document doc2 = factory2.newDocumentBuilder().parse(new FileInputStream(PathCertificatesDB));
    //normalization of the document Dom trough the interface Document
    //doc2.getDocumentElement().normalize();
    //construction of the three, the nl contains the list of all the element Certificates
    NodeList nl = doc2.getDocumentElement().getElementsByTagName("Ce rtificate");
    Element root = doc2.getDocumentElement();
    Node Valorenodo = root.getFirstChild();
    //perhaps can use NodeMaNamedNodeMap
    //cicle on all the element with tagname certificate
    for (int i =0; i<nl.getLength(); i++)
    {
    Node subnode1 = Valorenodo.getFirstChild();
    kind = subnode1.getNodeValue();
    subnode1 = subnode1.getNextSibling();
    pathcertificate = subnode1.getNodeValue();
    subnode1 = subnode1.getNextSibling();
    value = subnode1.getNodeValue();
    listModel.addElement(kind + " is a " + value + "-" + pathcertificate);
    int j=nl.getLength()-1;
    if (i<j)
    {
    Valorenodo = Valorenodo.getNextSibling();
    }
    }*/
    }

    //management of exception
    catch (IOException ioe)
    {
    System.err.println("Input/Output error: " + ioe.getMessage());
    System.exit(1);
    }

    catch (SAXParseException spe)
    {
    System.err.println("Parsing exception for entity " + spe.getPublicId() + " at line: " + spe.getLineNumber() + " column: " + spe.getColumnNumber());
    System.exit(1);
    }

    catch (SAXException se)
    {
    System.err.println("General SAX exception: " + se.getMessage());
    System.exit(1);
    }

    catch (ParserConfigurationException pce)
    {
    System.err.println("General SAX exception: " + pce.getMessage());
    System.exit(1);
    }

    catch (FactoryConfigurationError fce)
    {
    System.err.println("Configuration error: " + fce.getMessage());
    System.exit(1);
    }

    Che pero' mi da questo errore:
    unreported exception javax.xml.parsers.ParserConfigurationException; must be caught or declared to be thrown alle righe dove istanzio i nuovi documenti doc1 e doc2.
    Qualcuno saprebbe dirmi dove sbaglio?
    :metallica Stay Tuned!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quando posti del codice utilizza i tag [*CODE][*/CODE] (senza asterisco) in modo che risulti più leggibile e venga mantenuta l'indentazione.

    Poi, l'errore è dovuto al fatto che non hai catturato l'eccezione di cui ti parla l'errore stesso: ParserConfigurationException.

    Altra cosa, ti consiglio vivamente 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 elby
    Registrato dal
    Jan 2003
    Messaggi
    15
    Grazie per l'informazione.

    Purtroppo non posso cambiare parser perche' parte del sistema lo usa gia' e non posso cambiare le cose.

    Ma una volta ke gestisco l'eccezione, cmq mi trovo di fronte al fatto che il parser non parsa il file xml, da cui appunto l'errore. Se ci scrivo l'eccezzione, okey gli diko ke messaggino scrivermi su schermo, ma e dopo? Volevo un aiuto per capire dove devo intervenire per settare la configurazione del parser, che sembra essere la sorgente dei problemi.
    Sui file di aiuto del Dom parser non c'e' scritto di alcun file di configurazione, d'altronde io gli do direttamente il path del file dom.jar ecc ecc in fase di compilazione ed esecuzione.
    :metallica Stay Tuned!

  4. #4
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Puoi utilizzare anche dom4j che trovo davvero molto comodo.
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

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.