Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2015, 05:06
lscortez0
 
Fecha de Ingreso: mayo-2015
Mensajes: 1
Antigüedad: 9 años
Puntos: 0
Cambiar contenido de nodos xml en php

Buenos días,

Ante todo decir que soy novato en php, y espero con vuestra ayuda resolver el problema que me ha surgido.

Estoy tratando de realizar un pequeño programa en php que me sustituya el contenido de un nodo por otro en un xml.

Lo realizo con dom , el xml contiene 56.823 lineas y me muestra el error :

Fatal error: Maximum execution time of 1200 seconds exceeded in C:\xampp\htdocs\html\cambiocodigo.php on line 288

y solo cambia unas cuantas lineas.

El fichero contiene muchas lineas? o es la forma incorrecta de realizarlo?


Esto es un pequeño fragmento del php.

Código PHP:
<?php
set_time_limit
(1200);

$xml = new DOMDocument();
$fichero="fic.xml";

$xml->load($fichero);


$elementos=$xml->getElementsByTagName('Sector');


for (
$i=0$i<$elementos->length$i++) { 

      
$sectorviejo=$elementos->item($i)->nodeValue;

switch (
$sectorviejo) {

    case 
'Hombre > ABRIGO'
         
$nsector='341101';
         
codigoabrigou($nsector,$fichero);
        
        break;

    default:
        echo 
"<font color='red'>El sector ".$sectorviejo." no encuentra codigo a sustituir </font>";
        echo 
"<br>";
        break;
}
      
}


function 
codigoabrigou($sectornuevo,$fic){
$xml = new DOMDocument();
$fichero=$fic;
$xml->load($fichero);


$elementos=$xml->getElementsByTagName('Product');

foreach (
$elementos as $producto) {


    for (
$i=0$i <$elementos->length $i++) { 
         
$sector=$producto->getElementsByTagName("Sector")->item(0)->nodeValue;
         
$sviejo=$producto->getElementsByTagName("Sector")->item(0);
    }
    if(
$sector==="Hombre > ABRIGO"){
         
$cdata=$xml->createCDATASection($sectornuevo);
          
$sviejo->childNodes->item($i);
         
$sviejo->replaceChild($cdata,$sviejo->childNodes->item(0));
         
$xml->save($fichero);
         echo 
"se ha cambiado el sector ".$sector." por ".$sectornuevo;
         echo 
"<br>";
    }
    
}
   
 }


?>
El contenido del xml seria el siguiente.
Código:
<?xml version="1.0" ?>
<Sincro_details>
  <Products>
	<Product>
		<Product_id><![CDATA[2583]]></Product_id>
		<Title><![CDATA[producto prueba]]></Title>
		<Description><![CDATA[2014-2015]]></Description>
		<Price><![CDATA[20]]></Price>
		<Photos>
		<Photo><![CDATA[http://ruta/fotos/14201511471155383).jpg]]></Photo>
		<Photo><![CDATA[http://ruta/fotos/1832015192504122082.jpg]]></Photo>
		<Photo><![CDATA[http://ruta/1832015192504118464.jpg]]></Photo>
		<Photo><![CDATA[http://ruta/fotos/1832015192505647103.jpg]]></Photo>
		<Photo><![CDATA[]]></Photo>
		</Photos>
		<Keywords>
		<Keyword><![CDATA[]]></Keyword>
		<Keyword><![CDATA[]]></Keyword>
               <Keyword><![CDATA[]]></Keyword>
               <Keyword><![CDATA[]]></Keyword>
               <Keyword><![CDATA[]]></Keyword>
               </Keywords>
		
		<Unit_stock><![CDATA[1]]></Unit_stock>
		<Sector><![CDATA[341101]]></Sector>
</Product>
</Products>

Última edición por lscortez0; 20/05/2015 a las 08:30