Programación Web y Scripting > PHP
Xml Y Php
JrcsDev:
Hace tiempo encontré en código por alli (lo he visto en muchas webs) para trabajar XML con PHP, le corregí una cuestion e hice una prueba, y logré leer desde un archivo XML... el código es el siguiente:
index.php
--- Código: Text ---<?php $f="personas.xml"; $contenido = ""; if($da = fopen($f,"r")) { while ($aux= fgets($da,1024)) { $contenido.=$aux; } fclose($da); //echo $contenido; } else { echo "Error: no se ha podido leer el archivo <strong>$f</strong>"; exit(); } // $contenido=ereg_replace("á","a",$contenido); $contenido=ereg_replace("é","e",$contenido); $contenido=ereg_replace("í","i",$contenido); $contenido=ereg_replace("ó","o",$contenido); $contenido=ereg_replace("ú","u",$contenido); $contenido=ereg_replace("Á","A",$contenido); $contenido=ereg_replace("É","E",$contenido); $contenido=ereg_replace("Í","I",$contenido); $contenido=ereg_replace("Ó","O",$contenido); $contenido=ereg_replace("Ú","U",$contenido); $contenido=ereg_replace("Ñ","NI",$contenido); $contenido=ereg_replace("ñ","ni",$contenido); // $tagnames = array ("cedula","nombres","apellidos"); // if (!$xml = domxml_open_mem($contenido)) { echo "Ha ocurrido un error al procesar el documento <strong>\"$f\"</strong> a XML <br>"; exit(); } else { $raiz = $xml->document_element(); $tam=sizeof($tagnames); for($i=0; $i<$tam; $i++) { $nodo = $raiz->get_elements_by_tagname($tagnames[$i]); $j=0; foreach ($nodo as $etiqueta) { $matriz[$j][$tagnames[$i]]=$etiqueta->get_content(); $j++; } } } //echo "Numero de Registros: ".count($matriz)."<br>"; //echo $matriz[1]["nombres"];?><table border="1"><tr> <td>Cedula</td> <td>Nombres</td> <td>Apellidos</td></tr><?php for ($i=0;$i<count($matriz);$i++) { echo " <tr> <td>".$matriz[$i]["cedula"]."</td> <td>".$matriz[$i]["nombres"]."</td> <td>".$matriz[$i]["apellidos"]."</td> </tr> "; }?></table>
personas.xml
--- Código: Text ---<?xml version="1.0" encoding="ISO-8859-1"?><todo> <personas> <cedula>16002223</cedula> <nombres>Jesus Ramon</nombres> <apellidos>Cabrera Suarez</apellidos> </personas> <personas> <cedula>16825403</cedula> <nombres>Isabel Patricia</nombres> <apellidos>Kaiser Lira</apellidos> </personas> <personas> <cedula>16285597</cedula> <nombres>Robert Orlando</nombres> <apellidos>Ramirez Mata</apellidos> </personas></todo>
Ando buscando ahora como insertar más registros en el XML... y cómo borrar uno en específico... alguien tiene idea de como hacerlo??? a mi se me ocurre un camino muy largo, pero me gustaria escuchar ideas... GRACIAS!
Altareum:
Para borrar un nodo, tenés la función "remove_child"
Por otro lado, los "ereg_replace" que estás haciendo, están conceptualmente mal. Si necesitas utilizar caracteres especiales, utiliza CDATA.
Y por último, para abrir el xml, no uses fopen, utilizá directamente la función domxml_open_file
Altareum.
JrcsDev:
excelente información. Gracias, voy a probar y te cuento como me va!
Qko:
Hola a todoas, tengo una duda no si se alguien me pudiera ayudar, tengo que hacer una clase me permitar abrir un archivo jrxml desde php y no tengo ninguna idea se los agradesco si me puedieran ayudar
Qko:
Hola,
Estube checando tu codigo pero me marco un error en if (!$xml = domxml_open_mem($contenido)) y no se porque no se si me podrias ayudar de ante mano mil gracias
Navegación
[#] Página Siguiente
Ir a la versión completa