• User Newbie

    Conversione xml e inserimento in mysql

    Primo messaggio...:vaiii::vaiii::vaiii:
    Ho un sito sviluppato con OsCommerce, ora ho un po' di codice php che mi inserisce nel db mysql i dati dei miei prodotti prelevandoli da un file xml.
    Nel file xml ho un campo che proprio non riesco ad importare correttamente, che è il seguente:

    <DescriptionHtml>&lt;ul&gt; &lt;li&gt; vsfdvbcdbcxbxcbb &lt;/li&gt; &lt;li&gt; bvcbvcbvcbvcbvcb &lt;/li&gt; &lt;li&gt; bcbvcbvbvbvcbvcbvcbcvv &lt;/li&gt; &lt;/ul&gt;</DescriptionHtml>
    

    Il file xml è in UTF-8. Nel db viene inserito solamente:

    &gt;
    

    Se invece inserisco solamente del testo viene importato tutto senza problemi. A questo punto, date le mie scarse conoscenze di php, ho un po' di problemi:

    • devo convertire i caratteri (>, ecc ecc) in maniera tale che vengano inseriti correttamente nel db come tag html ma non riesco a farlo, tutte le funzioni che ho provato non mi hanno dato risultati
    • devo capire perchè viene troncato e inserito solo l'ultimo >
    • ho molti altri problemi che affronterò dopo di questo...:D:D:D

    Tengo a precisare che il codice per l'importazione non lo creato io ma mi è stato sviluppato (molto male e oltretutto mi è stato consegnato pieno di problemi irrisolti), quindi sono ben accettati tutti i consigli.
    ;););)


  • User Newbie

    Andando avanti a tentativi mi sono accorto di un'altra cosa, nell'xml le accentate sono così, questa è una "é":

    :()::()::():

    Scartabellando tra i vari file ho trovato questa funzione:

    [PHP]function __characterDataHndlr($parser, $data) {
    $data = trim($data);
    // $data = html_entity_decode(mb_convert_encoding(trim($data), 'Windows-1252', 'UTF-8'), ENT_NOQUOTES, 'Windows-1252');
    if ( $data != "" ) {
    if ($this->currElement !== "" && $this->workingProduct !== null)
    switch($this->currElement) {
    case CATEGORY: $this->workingProduct->setCategory($data); break;
    case SUBCATEGORY: $this->workingProduct->setSubcategory($data); break;
    case CUSTOMFIELD1: $this->workingProduct->setBrand($data); break;
    default:
    $this->dataBuffer = $data;
    }
    }
    }[/PHP]

    Potrebbe essere questa a gestire il tutto?
    :?:?:?