PHP:¿Cómo puedo pasar valores de un archivo XML a una base MySQL utilizando PHP?

De Foros del Web

Un proceso generalizado, para su entendimiento :)

archivo.xml:

Código PHP:

<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?> 
<VFPData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="items.xsd"> 
    <campos> 
        <valor1>12351</valor1> 
        <valor2>Viento</valor2> 
        <valor3>sgsfgds4</valor3> 
        <valor4>Idggdssg</valor4> 
    </campos> 
    <campos> 
        <valor1>12352</valor1> 
        <valor2>Agua</valor2> 
        <valor3>fdgdg 204</valor3> 
        <valor4>Isdg  rthyh56 h</valor4> 
    </campos> 
</VFPData> 

Código PHP:

<?php 
  $g_itemss = array(); 
  $g_elem_item = null; 
 
  function startElement( $parser, $name, $attrs )  
  { 
  global $g_itemss, $g_elem_item; 
  if ( $name == 'CAMPOS' ) $g_itemss []= array(); 
  $g_elem_item = $name; 
  } 
 
  function endElement( $parser, $name )  
  { 
  global $g_elem_item; 
  $g_elem_item = null; 
  } 
 
  function textData( $parser, $text ) 
  { 
  global $g_itemss, $g_elem_item; 
  if ( $g_elem_item == 'VALOR1' || 
  $g_elem_item == 'VALOR2' || 
  $g_elem_item == 'VALOR3' || 
  $g_elem_item == 'VALOR4' ) 
  { 
  $g_itemss[ count( $g_itemss ) - 1 ][ $g_elem_item ] = $text; 
  } 
  } 
 
  $parser = xml_parser_create(); 
 
  xml_set_element_handler( $parser, "startElement", "endElement" ); 
  xml_set_character_data_handler( $parser, "textData" ); 
 
  $f = fopen( 'archivo.xml', 'r' ); 
 
  while( $data = fread( $f, 4096 ) ) 
  { 
  xml_parse( $parser, $data ); 
  } 
 
  xml_parser_free( $parser ); 
 
  foreach( $g_itemss as $item_booked ) 
  { 
 
    $numorden = $item_booked['valor1']; 
    $tipoint = $item_booked['valor2']; 
    $numoper = $item_booked['valor3']; 
    $sector = $item_booked['valor4']; 
 
 
include("config.php"); //archivo de conexión a la base de datos 
 
////////////////////////////////////// 
////////////////////////////////////// 
    mysql_query("INSERT INTO tabla (mis_campos)values($mis_variables)")or die(mysql_error()); 
    mysql_free_result($grabaITEMS); 
    mysql_close (); 
} 
?> 

--daenor 10 Jul 2007

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales