Home > Mobile >  Import XML file content category and subcategory nested to PHP
Import XML file content category and subcategory nested to PHP

Time:08-11

I have listed below xml file: I'd like to show on video all children category's value. I have No problem with just one category using $xml = simplexml_load_file('example.xml');

$fatture = simplexml_load_file('example.xml');                        
}   


foreach ($fatture as $IdTrasmittente): 

   $F1=$IdTrasmittente->IdPaese;
   $F2=$IdTrasmittente->IdCodice;

..............

but I'm not able to import other category children data.

Thank you

<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versione="FPR12" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd">
    <FatturaElettronicaHeader>
        <DatiTrasmissione>
            <IdTrasmittente>
                <IdPaese>IT</IdPaese>
                <IdCodice>01234567890</IdCodice>
            </IdTrasmittente>
            <ProgressivoInvio>00001</ProgressivoInvio>
            <FormatoTrasmissione>FPR12</FormatoTrasmissione>
            <CodiceDestinatario>0000000</CodiceDestinatario>
            <PECDestinatario>[email protected]</PECDestinatario>
            <ContattiTrasmittente/>
        </DatiTrasmissione>
        <CedentePrestatore>
            <DatiAnagrafici>
                <IdFiscaleIVA>
                <IdPaese>IT</IdPaese>
                <IdCodice>01234567890</IdCodice>
                </IdFiscaleIVA>
                <Anagrafica>
                    <Denominazione>SOCIETA' ALPHA SRL</Denominazione>
                </Anagrafica>
                <RegimeFiscale>RF01</RegimeFiscale>
            </DatiAnagrafici>
            <Sede>
                <Indirizzo>VIALE ROMA 543</Indirizzo>
                <CAP>07100</CAP>
                <Comune>SASSARI</Comune>
                <Provincia>SS</Provincia>
                <Nazione>IT</Nazione>
            </Sede>
        </CedentePrestatore>
        <CessionarioCommittente>
            <DatiAnagrafici>
                <CodiceFiscale>09876543210</CodiceFiscale>
                <Anagrafica>
                    <Denominazione>BETA GAMMA</Denominazione>
                </Anagrafica>
            </DatiAnagrafici>
            <Sede>
                <Indirizzo>VIA TORINO 38-B</Indirizzo>
                <CAP>00145</CAP>
                <Comune>ROMA</Comune>
                <Provincia>RM</Provincia>
                <Nazione>IT</Nazione>
            </Sede>
        </CessionarioCommittente>
    </FatturaElettronicaHeader>
    <FatturaElettronicaBody>
        <DatiGenerali>
            <DatiGeneraliDocumento>
                <TipoDocumento>TD01</TipoDocumento>
                <Divisa>EUR</Divisa>
                <Data>2014-12-18</Data>
                <Numero>123</Numero>
                <Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS</Causale>
                <Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB</Causale>
            </DatiGeneraliDocumento>
            <DatiOrdineAcquisto>
                <RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
                <IdDocumento>66685</IdDocumento>
                <NumItem>1</NumItem>
            </DatiOrdineAcquisto>
            <DatiTrasporto>
                <DatiAnagraficiVettore>
                    <IdFiscaleIVA>
                        <IdPaese>IT</IdPaese>
                        <IdCodice>24681012141</IdCodice>
                    </IdFiscaleIVA>
                    <Anagrafica>
                        <Denominazione>Trasporto spa</Denominazione>
                    </Anagrafica>
                </DatiAnagraficiVettore>
                <DataOraConsegna>2012-10-22T16:46:12.000 02:00</DataOraConsegna>
            </DatiTrasporto>
        </DatiGenerali>
        <DatiBeniServizi>
            <DettaglioLinee>
                <NumeroLinea>1</NumeroLinea>
                <Descrizione>LA DESCRIZIONE DELLA FORNITURA PUO' SUPERARE I CENTO CARATTERI CHE RAPPRESENTAVANO IL PRECEDENTE LIMITE DIMENSIONALE. TALE LIMITE NELLA NUOVA VERSIONE E' STATO PORTATO A MILLE CARATTERI</Descrizione>
                <Quantita>5.00</Quantita>
                <PrezzoUnitario>1.00</PrezzoUnitario>
                <PrezzoTotale>5.00</PrezzoTotale>
                <AliquotaIVA>22.00</AliquotaIVA>
            </DettaglioLinee>
            <DettaglioLinee>
                <NumeroLinea>2</NumeroLinea>
                <Descrizione>FORNITURE VARIE PER UFFICIO</Descrizione>
                <Quantita>10.00</Quantita>
                <PrezzoUnitario>2.00</PrezzoUnitario>
                <PrezzoTotale>20.00</PrezzoTotale>
                <AliquotaIVA>22.00</AliquotaIVA>
            </DettaglioLinee>
            <DatiRiepilogo>
                <AliquotaIVA>22.00</AliquotaIVA>
                <ImponibileImporto>27.00</ImponibileImporto>
                <Imposta>5.95</Imposta>
                <EsigibilitaIVA>D</EsigibilitaIVA>
            </DatiRiepilogo>
        </DatiBeniServizi>
        <DatiPagamento>
            <CondizioniPagamento>TP01</CondizioniPagamento>
            <DettaglioPagamento>
                <ModalitaPagamento>MP01</ModalitaPagamento>
                <DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
                <ImportoPagamento>32.95</ImportoPagamento>
            </DettaglioPagamento>
        </DatiPagamento>
    </FatturaElettronicaBody>
</p:FatturaElettronica>

CodePudding user response:

As per the comment above, using DOMDocument and DOMXPath it is straightforward to find elements of interest with the XML.

Given an XML file, called sample.xml

<?xml version="1.0" encoding="utf-8"?>
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versione="FPR12" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd">
    <FatturaElettronicaHeader>
        <DatiTrasmissione>
            <IdTrasmittente>
                <IdPaese>IT</IdPaese>
                <IdCodice>9876543210</IdCodice>
            </IdTrasmittente>
            <ProgressivoInvio>00001</ProgressivoInvio>
            <FormatoTrasmissione>FPR12</FormatoTrasmissione>
            <CodiceDestinatario>0000000</CodiceDestinatario>
            <PECDestinatario>[email protected]</PECDestinatario>
            <ContattiTrasmittente/>
        </DatiTrasmissione>
        <CedentePrestatore>
            <DatiAnagrafici>
                <IdFiscaleIVA>
                <IdPaese>IT(a)</IdPaese>
                <IdCodice>01234567890</IdCodice>
                </IdFiscaleIVA>
                <Anagrafica>
                    <Denominazione>SOCIETA' ALPHA SRL</Denominazione>
                </Anagrafica>
                <RegimeFiscale>RF01</RegimeFiscale>
            </DatiAnagrafici>
            <Sede>
                <Indirizzo>VIALE ROMA 543</Indirizzo>
                <CAP>07100</CAP>
                <Comune>SASSARI</Comune>
                <Provincia>SS</Provincia>
                <Nazione>IT</Nazione>
            </Sede>
        </CedentePrestatore>
        <CessionarioCommittente>
            <DatiAnagrafici>
                <CodiceFiscale>09876543210</CodiceFiscale>
                <Anagrafica>
                    <Denominazione>BETA GAMMA</Denominazione>
                </Anagrafica>
            </DatiAnagrafici>
            <Sede>
                <Indirizzo>VIA TORINO 38-B</Indirizzo>
                <CAP>00145</CAP>
                <Comune>ROMA</Comune>
                <Provincia>RM</Provincia>
                <Nazione>IT</Nazione>
            </Sede>
        </CessionarioCommittente>
    </FatturaElettronicaHeader>
    <FatturaElettronicaBody>
        <DatiGenerali>
            <DatiGeneraliDocumento>
                <TipoDocumento>TD01</TipoDocumento>
                <Divisa>EUR</Divisa>
                <Data>2014-12-18</Data>
                <Numero>123</Numero>
                <Causale>LA FATTURA FA RIFERIMENTO AD UNA OPERAZIONE AAAA BBBBBBBBBBBBBBBBBB CCC DDDDDDDDDDDDDDD E FFFFFFFFFFFFFFFFFFFF GGGGGGGGGG HHHHHHH II LLLLLLLLLLLLLLLLL MMM NNNNN OO PPPPPPPPPPP QQQQ RRRR SSSSSSSSSSSSSS</Causale>
                <Causale>SEGUE DESCRIZIONE CAUSALE NEL CASO IN CUI NON SIANO STATI SUFFICIENTI 200 CARATTERI AAAAAAAAAAA BBBBBBBBBBBBBBBBB</Causale>
            </DatiGeneraliDocumento>
            <DatiOrdineAcquisto>
                <RiferimentoNumeroLinea>1</RiferimentoNumeroLinea>
                <IdDocumento>66685</IdDocumento>
                <NumItem>1</NumItem>
            </DatiOrdineAcquisto>
            <DatiTrasporto>
                <DatiAnagraficiVettore>
                    <IdFiscaleIVA>
                        <IdPaese>IT(b)</IdPaese>
                        <IdCodice>24681012141</IdCodice>
                    </IdFiscaleIVA>
                    <Anagrafica>
                        <Denominazione>Trasporto spa</Denominazione>
                    </Anagrafica>
                </DatiAnagraficiVettore>
                <DataOraConsegna>2012-10-22T16:46:12.000 02:00</DataOraConsegna>
            </DatiTrasporto>
        </DatiGenerali>
        <DatiBeniServizi>
            <DettaglioLinee>
                <NumeroLinea>1</NumeroLinea>
                <Descrizione>LA DESCRIZIONE DELLA FORNITURA PUO' SUPERARE I CENTO CARATTERI CHE RAPPRESENTAVANO IL PRECEDENTE LIMITE DIMENSIONALE. TALE LIMITE NELLA NUOVA VERSIONE E' STATO PORTATO A MILLE CARATTERI</Descrizione>
                <Quantita>5.00</Quantita>
                <PrezzoUnitario>1.00</PrezzoUnitario>
                <PrezzoTotale>5.00</PrezzoTotale>
                <AliquotaIVA>22.00</AliquotaIVA>
            </DettaglioLinee>
            <DettaglioLinee>
                <NumeroLinea>2</NumeroLinea>
                <Descrizione>FORNITURE VARIE PER UFFICIO</Descrizione>
                <Quantita>10.00</Quantita>
                <PrezzoUnitario>2.00</PrezzoUnitario>
                <PrezzoTotale>20.00</PrezzoTotale>
                <AliquotaIVA>22.00</AliquotaIVA>
            </DettaglioLinee>
            <DatiRiepilogo>
                <AliquotaIVA>22.00</AliquotaIVA>
                <ImponibileImporto>27.00</ImponibileImporto>
                <Imposta>5.95</Imposta>
                <EsigibilitaIVA>D</EsigibilitaIVA>
            </DatiRiepilogo>
        </DatiBeniServizi>
        <DatiPagamento>
            <CondizioniPagamento>TP01</CondizioniPagamento>
            <DettaglioPagamento>
                <ModalitaPagamento>MP01</ModalitaPagamento>
                <DataScadenzaPagamento>2015-01-30</DataScadenzaPagamento>
                <ImportoPagamento>32.95</ImportoPagamento>
            </DettaglioPagamento>
        </DatiPagamento>
    </FatturaElettronicaBody>
</p:FatturaElettronica>

To then find the DOM nodes you can do this:

# XML is located within the same directory as this script
$file=realpath( __DIR__ . '/italian-sample.xml' );

# invoke new instance of DOMDocument, set various
# options and load the XML file.
libxml_use_internal_errors( true );
$dom=new DOMDocument;
$dom->validateOnParse=false;
$dom->strictErrorChecking=false;
$dom->recover=true;
$dom->load( $file );
libxml_clear_errors();

# invoke new XPath instance
$xp=new DOMXPath( $dom );

# a really basic xpath query to find nodes of interest
$expr='//IdCodice | //IdPaese'; 


# query the xml and process all found nodes.
$col=$xp->query( $expr );
if( $col && $col->length > 0 ){
    foreach( $col as $node ){
        printf('<div>%s -> %s</div>',$node->tagName,$node->nodeValue);
    }
}

Which displays:

IdPaese -> IT
IdCodice -> 9876543210
IdPaese -> IT(a)
IdCodice -> 01234567890
IdPaese -> IT(b)
IdCodice -> 24681012141
  • Related