Foros del Web » Programando para Internet » PHP »

PHP OO (DOMDocument) Eliminar elementos con un atributo en particular?

Estas en el tema de (DOMDocument) Eliminar elementos con un atributo en particular? en el foro de PHP en Foros del Web. Buenas gente, recientemente me puse a investigar el objeto DOMDocument, pero no tengo muy claro el tema. Necesito filtrar ciertos elementos de un xml, pero ...
  #1 (permalink)  
Antiguo 16/10/2011, 12:43
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
(DOMDocument) Eliminar elementos con un atributo en particular?

Buenas gente, recientemente me puse a investigar el objeto DOMDocument, pero no tengo muy claro el tema. Necesito filtrar ciertos elementos de un xml, pero el filtrado depende del valor de un atributo.

<libros>
<libro eliminar="si">
<nombre>El señor de los anillos</nombre>
<autor>Tolkien</autor>
</libro>
<libro eliminar="no">
<nombre>Don Quijote de la Mancha</nombre>
<autor>Cervantes</autor>
</libro>
<libro>
<nombre>Martin Fierro</nombre>
<autor eliminar="si">Hernandez</autor>
</libro>
</libros>

Lo que yo necesitaria hacer es eliminar solo el libro cuyo atributo eliminar es si. Los otros dos (el que tiene eliminar no y el que no tiene atributo) deben permanecer. Mas aun, el autor del libro martin fierro tambien debe ser eliminado.

En realidad el xml al que se le va a aplicar este filtrado es un html, lo habia resuelto con simplexml, pero me surgian dos problemas, uno comentado en otro tema (sin solucion) y el otro es que al filtrar, los elementos sin contenido quedaban como elementos normales, por ejemplo:
<input type="text"/> pasaba a ser <input type="text"></input>

Con DOMDocument no tengo los dos ultimos problemas, pero no se como filtrar, ni siquiera se por donde empezar.

Un Saludo.
  #2 (permalink)  
Antiguo 16/10/2011, 13:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: (DOMDocument) Eliminar elementos con un atributo en particular?

No es recomendable crear temas nuevos para una duda que ya planteaste y, necesitariamos ver como estas haciendo el filtrado (codigo) para tratar de ayudarte a solucionarlo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 16/10/2011, 14:29
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: (DOMDocument) Eliminar elementos con un atributo en particular?

La duda no era la misma, a mi parecer, la otra era sobre simplexml y ahora es sobre domdocument...

Justamente el problema es que no se como filtrar el xml con domdocument. Lo que necesito hacer es lo siguiente:
Cita:
Iniciado por LhaN Ver Mensaje
<libros>
<libro eliminar="si">
<nombre>El señor de los anillos</nombre>
<autor>Tolkien</autor>
</libro>
<libro eliminar="no">
<nombre>Don Quijote de la Mancha</nombre>
<autor>Cervantes</autor>
</libro>
<libro>
<nombre>Martin Fierro</nombre>
<autor eliminar="si">Hernandez</autor>
</libro>
</libros>

Lo que yo necesitaria hacer es eliminar solo el libro cuyo atributo eliminar es si. Los otros dos (el que tiene eliminar no y el que no tiene atributo) deben permanecer. Mas aun, el autor del libro martin fierro tambien debe ser eliminado.
Es decir, debo localizar todos los elementos que tenga el atributo eliminar y si el valor del atributo eliminar es "si", entonces elimino el elemento (completo, con hijos incluidos).

Gracias.
  #4 (permalink)  
Antiguo 16/10/2011, 14:32
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: (DOMDocument) Eliminar elementos con un atributo en particular?

Que tal LhaN,

Puede utilizar DOMXpath.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 16/10/2011, 14:36
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: (DOMDocument) Eliminar elementos con un atributo en particular?

Mmm... gracias, supongo que debere ver como se trabaja con xpath.

Etiquetas: elementos, html, atributos
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 03:59.