[XML] Sustituir datos de una etiqueta ?

Iniciado por Diabliyo, 7 Febrero 2014, 17:36 PM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Buen dia.

Tengo un XML el cual cierta etiqueta tiene datos erroneos, y quisiera de forma automatica sustituir la informacion de dicha etiqueta para todos mis documentos XML.

Un ejemplo...

Tengo un XML por cada DIA este recopila las actividades que se hicieron en todo el dia, por defecto hay una etiqueta "Fecha" que es la fecha de creacion del XML (cuando inicio la lista de actividades), mas o menos asi:

<jornada>
      <eventos>
            <actividad>limpiar computadora</actividad>
            <actividad>visitar a X cliente</actividad>
      </eventos>
      <fecha>linux_time</fecha>
</jornada>


Quiero quitar el time linux y poner como atributo dos valores: timelinux y time estandarizado.

Hice un código que lee las etiquetas "fecha", convierte el time linux al formato que quiero, pero al momento de meterlo al XML me resultan 2 etiquetas :(

<jornada>
      <fecha>time_linux</fecha>
      <fecha timelinux="time_linux" time="MMDDYYYYTHH:MM:SS"></fecha>
      <eventos>
            <actividad>limpiar computadora</actividad>
            <actividad>visitar a X cliente</actividad>
      </eventos>
</jornada>


Como podría hacerlo sin hacer esa repetición ?

El código que hice fue:

Código (php) [Seleccionar]
<?php
$path
'directorio/';
$file'elarchivo.xml';
$carga= array( "linuxtime"=>"123456789123""time"=>"MMDDYYYYTHH:MM:SS" );

$xml = new DOMdocument"1.0""UTF-8" );
$xml->preserveWhiteSpaceFALSE;
$xml->load($path.$file); # cargamos el XML
$a$xml->getElementsByTagName("jornada")->item(0); # buscamos elementos
$jornada$xml->createElement("fecha"); # creamos tag
$a->appendChild($jornada);
cargaAtt($jornada$carga ); # cargamos atributos
?>


LA idea es obtener como resultado algo asi:

<jornada>
      <fecha timelinux="time_linux" time="MMDDYYYYTHH:MM:SS"></fecha>
      <eventos>
            <actividad>limpiar computadora</actividad>
            <actividad>visitar a X cliente</actividad>
      </eventos>
</jornada>

EFEX

#1
Usa setAttribute('nombre', 'valor), creo que seria algo asi..
Código (php) [Seleccionar]

$jornada= $xml->createElement("fecha");
$fecha = $a->appendChild($jornada);
$fecha->setAttribute("linuxtime", "123456789123");
$fecha->setAttribute("time", "MMDDYYYYTHH:MM:SS");


Y para que no este el otro elemento fecha, podes borrarlo de entrada con removeChild() o editarlo directamente sin tener que crear otro elemento fecha con getElementsByTagName().

https://php.net/manual/es/domnode.removechild.php
GITHUB