Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [xml-php]Problema lettura file

    Salve giovani,


    ho un piccolo problema.. Ho un file XML che contiene una cosa di questo tipo:

    Codice PHP:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <root>
        <items>
            <item id="Agrigento">1582</item>
            <item id="Alessandria">1032</item>
            <item id="Ancona">1489</item>
                    ........
                    <item id="L'Aquila>1645</item>
            </items>
    </root>
    ora quando vado a leggerlo per trovare il valore relativo a "L'Aquila" il parser va in errore.. ed il problema è l'apostrofo.. con tutte le altre province lo script funziona bene.

    Codice PHP:
        private function __leggiCoefficente$provincia$doc ) {
            
    $domDoc = new DOMDocument'1.0' );
            
    $domDoc->validateOnParse =  TRUE;
            
    $domDoc->Load$doc );
            
    $row $this->__getElementById$domDoc$provincia );
            
    $coefficente $row->nodeValue;
            return 
    $coefficente;
        } 
    qualcuno sa dirmi come risolvere il problema?
    Grazie in anticipo
    Questa volta, più che un voto.. è favoreggiamento.

  2. #2
    Utente di HTML.it L'avatar di Ceras
    Registrato dal
    Oct 2009
    Messaggi
    141

    Re: [xml-php]Problema lettura file

    Originariamente inviato da Al_katraz984
    Salve giovani,


    ho un piccolo problema.. Ho un file XML che contiene una cosa di questo tipo:

    Codice PHP:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <root>
        <items>
            <item id="Agrigento">1582</item>
            <item id="Alessandria">1032</item>
            <item id="Ancona">1489</item>
                    ........
                    <item id="L'Aquila>1645</item>
            </items>
    </root>
    ora quando vado a leggerlo per trovare il valore relativo a "L'Aquila" il parser va in errore.. ed il problema è l'apostrofo.. con tutte le altre province lo script funziona bene.

    Codice PHP:
        private function __leggiCoefficente$provincia$doc ) {
            
    $domDoc = new DOMDocument'1.0' );
            
    $domDoc->validateOnParse =  TRUE;
            
    $domDoc->Load$doc );
            
    $row $this->__getElementById$domDoc$provincia );
            
    $coefficente $row->nodeValue;
            return 
    $coefficente;
        } 
    qualcuno sa dirmi come risolvere il problema?
    Grazie in anticipo
    Il problema è a priori... Se non sbaglio nello standard xml i valori degli attributi dei tag vanno senza apostrofi per essere ben formattati, oppure possono andare ma con i caratteri di escape o altro (\', &acute.

    Se puoi agire sui file xml consiglio di riformattarli... Prova solamente a sostituire ' con \' e vedi cosa fa...

  3. #3
    Ciao Ceras,

    intendi mettere sul file xml il valore &# 39; (senza spazio) ?? In teoria c'ho già provato ma non funziona.. Quando va in cerva del valore associato mi esce l'errore:

    Trying to get property of non-object alla riga "$coefficente = $row->nodeValue;"


    Confermo non funziona neanche con l'escape.. :master:
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it L'avatar di Ceras
    Registrato dal
    Oct 2009
    Messaggi
    141
    Originariamente inviato da Al_katraz984
    Ciao Ceras,

    intendi mettere sul file xml il valore &# 39; (senza spazio) ?? In teoria c'ho già provato ma non funziona.. Quando va in cerva del valore associato mi esce l'errore:

    Trying to get property of non-object alla riga "$coefficente = $row->nodeValue;"


    Confermo non funziona neanche con l'escape.. :master:
    Mi sorge un dubbio... Non è che il problema è nel nome dell'attributo? Potrebbe essere che il nome "id" è ritenuto sempre associato ad un codice alfanumerico ben formattato?
    Giusto per curiosità, prova a cambiare il nome "id" in "nome" per es.

    Nel peggiore dei casi dovresti inserire un nuovo tag all'interno (il w3c consiglia tral'altro di fare così quando alcuni attributi sono più "complessi")

    es.
    codice:
    <root>
        <items>
            <item>
                <idItem>Agrigento</idItem>
                <number>1582</number>
            </item>
            <item>
                <idItem>L'Aquila</idItem>
                <number>1645</number>
            </item>
        </items>
    </root>

  5. #5
    Una domanda: ma nell'attributo id dove c'è scritto L'Aquila, manca un doppio apice di chiusura o è una svista di scrittura?

  6. #6
    è una svista di scrittura..

    per il momento ho risolto in questo modo:

    Codice PHP:
        private function __leggiCoefficente$provincia$doc ) {
            if ( 
    strstr$provincia"\'" ) ) {
                
    $provincia preg_replace"[\\\']"'_'$provincia );
            }
            
    $domDoc = new DOMDocument'1.0' );
            
    $domDoc->validateOnParse =  TRUE;
            
    $domDoc->Load$doc );
            
    $row $this->__getElementById$domDoc$provincia );
            
    $coefficente $row->nodeValue;
            return 
    $coefficente;
        } 
    e sul file xml ho messo:
    Codice PHP:
            <item id="L_Aquila">1645</item
    non è molto professionale ma x ora funziona.. ho notato che comunque la variabile $provincia viene passata come "L\ 'Aquila" e non "L'Aquila".

    Purtroppo non ho il tempo di riscrivere tutto il file xml..
    Questa volta, più che un voto.. è favoreggiamento.

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.