Convertire XML in JSON con PHP e laminas-xml2json

Mattepuffo's logo
Convertire XML in JSON con PHP e laminas-xml2json

Convertire XML in JSON con PHP e laminas-xml2json

In sostanza ho un XML che devo mappare e convertire in JSON con PHP.

Quindi tutti i tag XML devono diventare campi del JSON.

Mi hanno indicato la libreria laminas-xml2json, e devo dire che ha funzionato subito.

Possiamo installarla con composer:

composer require laminas/laminas-xml2json

Questo il file XML:

<dtt:richiestaAcquisizioneSchedaControlloFamiglia xmlns:dtt="http://www.dtt.it/xsd/Immatricolazioni">
    <dtt:intestazioneFamiglia>
        <dtt:omologazioneEuropea>e8*2018/858*00063*04</dtt:omologazioneEuropea>
        <dtt:dataRilascioOmologazioneEuropea>2024-02-08</dtt:dataRilascioOmologazioneEuropea>
        <dtt:costruttoreFamiglia>6554</dtt:costruttoreFamiglia>
        <dtt:marchio>23B</dtt:marchio>
        <dtt:famiglia>URBINO 12</dtt:famiglia>
        <dtt:categoriaInternazionale>M3</dtt:categoriaInternazionale>
    </dtt:intestazioneFamiglia>
    <dtt:richiestaAcquisizioneSchedaControlloFamigliaM2M3>
        <dtt:caratteristicheGeneraliDiCostruzione>
            <dtt:numeroAssi>2</dtt:numeroAssi>
        </dtt:caratteristicheGeneraliDiCostruzione>
        <dtt:dimensioniPrincipali>
            <dtt:interasse asse="12">
                <dtt:descrizioneValoreDatoTecnicoMinimo>5900</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>5900</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:interasse>
            <dtt:lunghezza>
                <dtt:descrizioneValoreDatoTecnicoMinimo>12000</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>12000</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:lunghezza>
        </dtt:dimensioniPrincipali>
        <dtt:masse>
            <dtt:massaDelVeicoloInOrdineDiMarciaTara>
                <dtt:descrizioneValoreDatoTecnicoMinimo>9900</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>14950</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaDelVeicoloInOrdineDiMarciaTara>
            <dtt:massaMassimaTecnicamenteAmmissibileAPienoCarico>
                <dtt:descrizioneValoreDatoTecnicoMinimo>19245</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>19700</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaMassimaTecnicamenteAmmissibileAPienoCarico>
            <dtt:massaMassimaTecnicamenteAmmissibilePerImmatricolazione>
                <dtt:descrizioneValoreDatoTecnicoMinimo>19245</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>19700</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaMassimaTecnicamenteAmmissibilePerImmatricolazione>
            <dtt:massaTrainabileInCasoDiRimorchioATimone>
                <dtt:descrizioneValoreDatoTecnicoMinimo>0</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>0</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaTrainabileInCasoDiRimorchioATimone>
        </dtt:masse>
        <dtt:massePerAsse asse="1">
            <dtt:massaMassimaTecnicamenteAmmissibileSuAsse>
                <dtt:descrizioneValoreDatoTecnicoMinimo>7245</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>7700</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaMassimaTecnicamenteAmmissibileSuAsse>
            <dtt:massaMassimaAmmissibilePerImmatricolazioneAsse>
                <dtt:descrizioneValoreDatoTecnicoMinimo>7245</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>7700</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaMassimaAmmissibilePerImmatricolazioneAsse>
        </dtt:massePerAsse>
        <dtt:massePerAsse asse="2">
            <dtt:massaMassimaTecnicamenteAmmissibileSuAsse>
                <dtt:descrizioneValoreDatoTecnicoMinimo>12000</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>12000</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaMassimaTecnicamenteAmmissibileSuAsse>
            <dtt:massaMassimaAmmissibilePerImmatricolazioneAsse>
                <dtt:descrizioneValoreDatoTecnicoMinimo>12000</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>12000</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:massaMassimaAmmissibilePerImmatricolazioneAsse>
        </dtt:massePerAsse>
        <dtt:apparatoMotore>
            <dtt:codiceMotore>AVE 130</dtt:codiceMotore>
            <dtt:codiceMotore>CeTrax CX 220 110 B</dtt:codiceMotore>
            <dtt:codiceMotore>L9NE6E320</dtt:codiceMotore>
            <dtt:cilindrata>0</dtt:cilindrata>
            <dtt:cilindrata>8880</dtt:cilindrata>
            <dtt:cilindrata>0</dtt:cilindrata>
            <dtt:carburante>ELE</dtt:carburante>
            <dtt:carburante>ME</dtt:carburante>
        </dtt:apparatoMotore>
        <dtt:potenzaMotoreTermico combustibile="ME">
            <dtt:potenzaMassimaNettaMotoreTermico>235</dtt:potenzaMassimaNettaMotoreTermico>
            <dtt:regimeDiPotenzaMassima>2000</dtt:regimeDiPotenzaMassima>
        </dtt:potenzaMotoreTermico>
        <dtt:assiESospensioni>
            <dtt:carreggiata asse="1">
                <dtt:descrizioneValoreDatoTecnicoMinimo>2085</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>2178</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:carreggiata>
            <dtt:carreggiata asse="2">
                <dtt:descrizioneValoreDatoTecnicoMinimo>1826</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>1888</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:carreggiata>
        </dtt:assiESospensioni>
        <dtt:pneumatico ruota="1" asse="1">
            <dtt:larghezzaPneumatico>275</dtt:larghezzaPneumatico>
            <dtt:coefficienteDiRibassamento>70</dtt:coefficienteDiRibassamento>
            <dtt:raggioRuota>22,5</dtt:raggioRuota>
            <dtt:indiceDiCarico>148</dtt:indiceDiCarico>
            <dtt:indiceDiVelocita>J</dtt:indiceDiVelocita>
        </dtt:pneumatico>
        <dtt:pneumatico ruota="1" asse="2">
            <dtt:larghezzaPneumatico>275</dtt:larghezzaPneumatico>
            <dtt:coefficienteDiRibassamento>70</dtt:coefficienteDiRibassamento>
            <dtt:raggioRuota>22,5</dtt:raggioRuota>
            <dtt:indiceDiCarico>145</dtt:indiceDiCarico>
            <dtt:indiceDiVelocita>J</dtt:indiceDiVelocita>
        </dtt:pneumatico>
        <dtt:prestazioniAmbientali>
            <dtt:emissioniGasScaricoNumeroAttoNormativo>ZZ</dtt:emissioniGasScaricoNumeroAttoNormativo>
            <dtt:emissioniGasScaricoNumeroAttoNormativo>C27</dtt:emissioniGasScaricoNumeroAttoNormativo>
        </dtt:prestazioniAmbientali>
        <dtt:prestazioniAmbientaliMotoreElettrico>
            <dtt:potenzaMassima30MinutiMotoreElettrico>225</dtt:potenzaMassima30MinutiMotoreElettrico>
        </dtt:prestazioniAmbientaliMotoreElettrico>
        <dtt:proceduraDiProva4 combustibile="ME">
            <dtt:particolatoProceduraDiProvaWhtcMgKw>
                <dtt:descrizioneValoreDatoTecnicoMinimo>0.1</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>0.1</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:particolatoProceduraDiProvaWhtcMgKw>
            <dtt:noxProceduraDiProvaWhtcMgKw>
                <dtt:descrizioneValoreDatoTecnicoMinimo>76.73</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>76.73</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:noxProceduraDiProvaWhtcMgKw>
            <dtt:nh3ProceduraDiProvaWhtcMgKw>
                <dtt:descrizioneValoreDatoTecnicoMinimo>0.73</dtt:descrizioneValoreDatoTecnicoMinimo>
                <dtt:descrizioneValoreDatoTecnicoMassimo>0.73</dtt:descrizioneValoreDatoTecnicoMassimo>
            </dtt:nh3ProceduraDiProvaWhtcMgKw>
        </dtt:proceduraDiProva4>
    </dtt:richiestaAcquisizioneSchedaControlloFamigliaM2M3>
</dtt:richiestaAcquisizioneSchedaControlloFamiglia>

Questo il codice PHP:

include_once 'vendor/autoload.php';

$xml = str_replace('dtt:', '', file_get_contents('g1.xml'));
$json = Laminas\Xml2Json\Xml2Json::fromXml($xml, true);
var_dump($json);

Come vedete ho dovuto fare "pulizia" dei dtt:, sennò mi andava in errore.

Enjoy!


Condividi

Commentami!