Leggere xml con dom in php

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve ragazzi, ho questo file, leggo tutti i nodi, però non ho il risultato sperato con un nodo in particolare. Ecco il codice xml:

Codice:
<Products>
    <Product>
      <InternalID>13</InternalID>
      <ManageWarehouse>true</ManageWarehouse>
      <Notes>reggiseno,reggiseni,balconcino,aris</Notes>
      <ImageFileName>0013-01 (13).jpg</ImageFileName>
      <Variant>
        <Size>1</Size>
        <Color>BIANCO</Color>
      </Variant>
      <Variant>
        <Size>2</Size>
        <Color>BIANCO</Color>
      </Variant>
      <Variant>
        <Size>3</Size>
        <Color>BIANCO</Color>
      </Variant>
    </Product>

In php Dom:
PHP:
$xml=new DOMDocument('1.0','UTF-8');
   $xml->load('articoli.xml');
   
   $xmlRoot=$xml->documentElement;
   
   $cicle1=$xmlRoot->getAttribute('Mode');

   $nodes=$xmlRoot->getElementsByTagName('Product'); 
   $variant=$xmlRoot->getElementsByTagName('Variant'); 

foreach($variant as $v) {
      $qv['products_options_values_name'] = $v->getElementsByTagName('Size')->item(0)->nodeValue;
....

In $variant leggo il contenuto del tag Variant, però devo inserire nel database il contenuto del tag InternalId e tutti i contenuti del tag variant associati al prodotto.

Ora riesco a recapitare tutti i valori, però quando eseguo la query per inserire i record associati ai prodotti nel database, m'inserisce l'id del primo prodotto e poi tutti i contenuti del tag variant, cioè se all'articolo 1 è associato bianco e nero, e nell'articolo 2 è associato verde e blu, nell'associazione nel database m'inserisca "l'articolo1 con bianco, nero, verde, e blu".
Spero di essere stato abbastanza chiaro nel descrivere il mio problema, visto che è complicato anche ad esternarlo.

Grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
La parte di codice che non funziona è questa:
PHP:
foreach($variant as $v) {
      $qv['products_options_values_name'] = $v->getElementsByTagName('Size')->item(0)->nodeValue;
...
Se hai diversi elementi Size, perché recuperi sempre il primo? Prova così:
PHP:
$count = 0;
foreach($variant as $v) {
      $qv['products_options_values_name'] = $v->getElementsByTagName('Size')->item($count)->nodeValue;
      $count++;
...
 

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Così neanche mi riesce, in base al codice xml che ho postato sopra,
(partenda dall'inizio) come posso fare in modo di prelevare il codice, la taglia e il colore associati ad ogni prodotto ed inserirli nel database?

Grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Con un codice tipo questo:
PHP:
<?php
// apre il file XML
$xml = new DOMDocument('1.0', 'UTF-8');
$xml->load('articoli.xml');

// recupera l'elemento base
$xmlRoot = $xml->documentElement;

// recupera tutti i prodotti
$products = $xmlRoot->getElementsByTagName('Product');

// inizializza un array
$data = array();

// cicla tutti i prodotti
for($i = 0; $i < count($products); $i++)
{
	// recupera l'oggetto DOM del prodotto
	$product = $products->item($i);

	// crea un nuovo array
	$data[$i] = array();

	// recupera le varianti del prodotto
	$variants = $product->getElementsByTagName('Variant');

	// cicla tutte le varianti
	for($x = 0; $x < count($variants); $x++)
	{
		// recupera l'oggetto DOM della variante
		$variant = $variants->item($x);

		// inizializza l'array della variante
		$data[$i][$x] = array();

		// salva nell'array i nuovi dati
		$data[$i][$x]['Size'] = $variant->getElementsByTagName('Size')->item(0)->nodeValue;
		$data[$i][$x]['Color'] = $variant->getElementsByTagName('Color')->item(0)->nodeValue;
	}
}

// visualizza le informazioni
var_dump($data);
?>
Prendendo come esempio il file XML sopra riportato, questo script restituisce:
Codice:
array(1) {
  [0]=>
  array(1) {
    [0]=>
    array(2) {
      ["Size"]=>
      string(1) "1"
      ["Color"]=>
      string(6) "BIANCO"
    }
  }
}
Non capisco però perché non mostra le altre varianti...
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
Z Leggere feed rss xml con link di riferimento in .aspx PHP 4
G Leggere item(XML) con javascript Javascript 1
P Leggere XML PHP 4
maxbossi Regolamento Regolamento forum XML - Leggere attentamente XML 0
neo996sps [risolto] Usare PHP per leggere da file XML PHP 3
M Leggere i dati di un fil xml e stampare i suoi dati tramite librerie gd PHP 1
A Ciclo ASP per leggere XML Classic ASP 7
G leggere file xml su server remoto Ajax 0
L leggere file xml dove i tag sono del tipo <stringa:altra_stringa> PHP 0
L leggere un file xml XML 1
LaKanka Leggere dati da file xml PHP 19
G leggere xml Classic ASP 2
M Leggere in un report il valore di una casella combinata di una maschera Database 0
otto9due Leggere valore da array multidimensionale a chiavi dinamiche PHP 1
D PHP leggere cartella di Windows PHP 1
G leggere file txt e stampare con php il contenuto a video PHP 7
S Leggere dati da API e visualizzarli PHP 0
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
maxbossi Attenzione alle TRUFFE: Leggere attentamente!!! Annunci servizi di Social Media Marketing 0
J Leggere JSON da Instagram __a=1 PHP 0
L leggere RGB di un pixel dello schermo in java Java 1
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
Q Leggere NFC da web app - web nfc Javascript 0
G Pec come leggere il contenuto Posta Elettronica 1
D [ASP] Leggere Campo decimal MYSQL Classic ASP 1
M leggere con jquery/ajax in una function javascript record di database sql server Javascript 0
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
Drago73 [Java] leggere/scrivere txt server Java 0
C Leggere dati File.XMLcon PHP XML 11
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
M Leggere il contenuto di una cartella e memorizzare il nome file in mysql PHP 1
I [Javascript] Leggere "var" da file .js esterno (per google map) Javascript 6
W [PHP] Leggere un array un po complicato PHP 3
K Script PHP per leggere array.txt Presentati al Forum 3
H Interpretare e leggere il file log di sfc/scannow. Windows e Software 0
P leggere file .csv con javascript/jquery Javascript 11
V Leggere da db e metodi asincroni:vorrei capire jQuery 8
Monital Leggere un file php contenente dati json PHP 10
napuleone Leggere la scelta radio Javascript 0
Trapano Leggere un file .txt dal fondo PHP 7
Francesco Polese Leggere linea da un file ed eliminarla PHP 2
K leggere codice ean con fotocamera PHP 0
maxbossi Regolamento Regolamento della sezione - leggere ATTENTAMENTE prima di postare IP Cam e Videosorveglianza 0
P leggere dvd e memorizzazione dei dati letti PHP 1
L xmlrpc leggere le risposte. qualcuno mi aiuta? PHP 1
F Leggere file contenuti in cartella e modificarne il nome PHP 3
M Leggere dati da file excel in base al nome del foglio di lavoro PHP 0
felino [Ajax] Leggere in contenuto da un URL esterno Ajax 2
napuleone type="file" leggere con js Javascript 3

Discussioni simili