Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    6

    aiuto su parser xml con java

    Salve a tutti, ho un problema come da titolo e volevo chiedervi un aiuto ....
    Vi espongo il mio problema:
    ho fatto un programma java che fa il parse di un file xml, strutturato secondo un xsd:

    apparentemente sembrava che tutto funizionasse, ma quando per errore è stato inserito un nuovo tag nel file XML di inizio e fine file, non mi sono ritrovato più gli errori generati dal parser.
    esempio di file xml che ritenevo normale:

    <?xml version="1.0" encoding="UTF-8"?>
    <IdentificazioneFlusso ProtocolloMittente = "000001" >
    <IdentificazioneMittente Mittente = "RM" Denominazione = "ROMA" >
    <Iscritti>
    <IdentificazioneIscritto CodiceFiscale = "BBBPLA61H25H501F" CodicePersonale = "3456ff789K">
    <AnagraficaIscritto Cognome = "Bianchi" Nome = "Mario" DataNascita = "1952-01-01"
    Sesso = "M" />
    <IndirizzoIscritto Indirizzo = "Via Roma 111" Frazione = "Roma" CAP = "00100" LuogoResidenza = "H544" />
    </IdentificazioneIscritto>
    </ListaIscritti>
    </IdentificazioneMittente>
    </IdentificazioneFlusso>


    Quando per errore ho inserito dopo la prima riga un tag nuovo che non esiste nel mio xsd e la relativa chiusura in fondo al file come nell'esempio:
    <?xml version="1.0" encoding="UTF-8"?>
    <nuovoTag>
    <IdentificazioneFlusso ProtocolloMittente = "000001" >
    <IdentificazioneMittente Mittente = "RM" Denominazione = "ROMA" >
    <Iscritti>
    <IdentificazioneIscritto CodiceFiscale = "BBBPLA61H25H501F" CodicePersonale = "3456ff789K">
    <AnagraficaIscritto Cognome = "Bianchi" Nome = "Mario" DataNascita = "1952-01-01"
    Sesso = "M" />
    <IndirizzoIscritto Indirizzo = "Via Roma 111" Frazione = "Roma" CAP = "00100" LuogoResidenza = "H544" />
    </IdentificazioneIscritto>
    </ListaIscritti>
    </IdentificazioneMittente>
    </IdentificazioneFlusso>
    </nuovoTag>

    Il parser non ha più prodotto gli errori stabiliti dal xsd.
    come se il nuovo tag facesse saltare la struttura intera.

    ora non riesco a compredere se sia normale così, cioè si deve costruire un file xml esattamente secondo le specifiche dell'xsd.
    Oppure devo aggiungere qualcosa nel programma, per far rilevare al parser l'errore di un tag non presente nell'xsd.
    Ho pensato che il problema potesse essere nelle giuste caratteristiche del parser:
    parser.setProperty()
    parser.setFeature()

    Dove parser è la mia classe java così dichiarata:
    XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerce s.parsers.SAXParser");

    ho provato a ad aggiungerci cose del tipo:
    parser.setFeature("http://apache.org/xml/features/validation/schema", true); //XSD
    parser.setFeature("http://apache.org/xml/features/validation/schema/element-default", true);

    parser.setFeature("http://apache.org/xml/features/validation/dynamic", true);
    parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking",
    true);
    parser.setFeature("http://apache.org/xml/features/continue-after-fatal-error",
    true);
    parser.setFeature("http://apache.org/xml/features/validation/warn-on-undeclared-elemdef",
    true);
    parser.setFeature("http://apache.org/xml/features/validation/warn-on-duplicate-attdef",
    true);
    ma il risultato non cambia.....
    sapreste darmi indicazione?

    Grazie.

    Ciao Paolo

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    6
    Solo per aiutare chi come me è in crisi, posso dire di avere risolto a metà,
    nel senso che non era il programma che dava problemi, ma il fatto che mi hanno dato un file xml salvato con notepad in ansi-UTF-8.
    Questo fa si che il file memorizzato abbia dentro di se codificato tutti i caratteri in utf-8 facendo credere al pharser che non ci sono errori....
    Ora però mi rimane un problema, come faccio a sapere se mi stanno inviando un file memorizzato in UTF-8 in Java?



    Ciao paolo.

  3. #3
    ciao, credo che in Java ci sia una classe per la validazione di un documento XML. La classe ti dovrebbe controllare se il file è in formato XML.

    Volevo chiederti però una soluzione ad un mio problema:
    sto facendo richieste ad un server il quale mi risponde con file XML.
    Io leggo da stream la risposta e la scrivo su file. Fatto questo devo parsare il documento per creare un DOM. Ecco il problema: non riesce a parsare il file perchè ci sono caratteri speciali all'interno del documento XML come caratteri cinesi o forme strane.

    Sai per caso come faccio a dirgli di leggere i cratteri in formato UTF-8?
    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    6
    per esperienze personali l'unico modo che hai è di non far generare la classe
    parser.setErrorHandler

    dove parser è la classe
    XMLReader parser =
    XMLReaderFactory.createXMLReader("org.apache.xerce s.parsers.SAXParser");

    nel mio caso....

  5. #5
    Scusami ma non ho capito cosa devo fare.
    I ho fatto così per fare il parser:

    public class TrovaVideoList
    {
    private DOMParser parser;
    private String XmlParsare=null;
    private org.apache.xerces.dom.DocumentImpl document=null;
    private Node root=null;
    private NodeIterator iterator=null;

    public TrovaVideoList()
    {
    document=new org.apache.xerces.dom.DocumentImpl();
    XmlParsare="C:/Mio.xml";
    parser= new DOMParser();

    iterator=null;
    }
    public void CercaVideoList()
    {
    try

    {

    parser.parse(XmlParsare);

    } catch (SAXException e)
    {
    System.out.println("Eccezione Sax: "+e.getMessage());
    System.out.println(e.getCause());

    }
    catch (IOException e1)
    {
    System.out.println("Eccezione IO: "+e1.getMessage());
    System.out.println(e1.getCause());
    e1.printStackTrace();
    }

    document=(DocumentImpl) parser.getDocument();
    root=document.getFirstChild();
    ...........

    poi ho fatto la ricerca.

    Ma non riesce a leggere i caratteri come la Z con sopra l'accento e tutti i caratteri simili.

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.