Foros del Web » Programando para Internet » PHP »

Eliminar un nodo XML en PHP

Estas en el tema de Eliminar un nodo XML en PHP en el foro de PHP en Foros del Web. Buenas, llevo dándole vueltas a esto y he consultado en la referencia oficial de PHP y no consigo eliminar un "nodo hijo" de XML desde ...
  #1 (permalink)  
Antiguo 10/08/2012, 05:10
 
Fecha de Ingreso: abril-2010
Mensajes: 37
Antigüedad: 14 años
Puntos: 1
Eliminar un nodo XML en PHP

Buenas, llevo dándole vueltas a esto y he consultado en la referencia oficial de PHP y no consigo eliminar un "nodo hijo" de XML desde PHP.

En el manual de PHP pone esto:
http://php.net/manual/es/domnode.removechild.php

El fichero de prueba es este: book.xml


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<book id="listing">
<title>My lists</title>
<chapter>My chapter</chapter>
</book>

Quiero eliminar lo que he puesto en rojo. Según el manual el código es este:

Código PHP:
<?php

$doc 
= new DOMDocument;
$doc->load('book.xml');

$book $doc->documentElement;

// recuperamos el capítulo y lo eliminamos del libro
$chapter $book->getElementsByTagName('chapter')->item(0);
$oldchapter $book->removeChild($chapter);

echo 
$doc->saveXML();

?>
He probado hacer un "echo" a la variable $chapter para comprobar que me muestra el valor del primer $chapter y no lo muestra, mirando en google he visto que hay que poner
$chapter = $book->getElementsByTagName('chapter')->item(0)->nodeValue;

De esa forma si que puedo mirar el valor de $chapter, es decir, me muestra por pantalla lo que hay entre las etiquetas <chapter></chapter> del código XML, "My chapter"

Pero lo que no consigo es eliminar la etiqueta. Si algun entendido en el tema puede orientarme ...

PD. Uso PHP5 y el manual el enlace que he puesto está orientado para PHP5.
  #2 (permalink)  
Antiguo 10/08/2012, 07:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Eliminar un nodo XML en PHP

Tal cual lo pones sale, acuérdate que como son etiquetas posible no se visualiza en el navegador a menos que envies un encabezado indicando que lo que vas a mostrar es XML. Pero para que veas que resulta solo haz algo así al final
Código PHP:
Ver original
  1. echo htmlentities($doc->saveXML());

Edito: Si lo que quieres es modificar el archivo solo usa save en vez de saveXML
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 11/08/2012, 08:48
 
Fecha de Ingreso: abril-2010
Mensajes: 37
Antigüedad: 14 años
Puntos: 1
Respuesta: Eliminar un nodo XML en PHP

+1 verde abimaelrc! era eso... save en vez de saveXML, es la primera vez que me pongo a editar xml desde php, muchas gracias compañero.

Etiquetas: xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:34.