Foros del Web » Programando para Internet » PHP »

PHP OO Dudas con DomXML

Estas en el tema de Dudas con DomXML en el foro de PHP en Foros del Web. Buenas a todos, De nuevo, vengo a hacer una preguntilla. Me he volcado en un proyecto nuevo que va a plantearme muchas dudas. Utilizo por ...
  #1 (permalink)  
Antiguo 08/09/2011, 03:16
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Dudas con DomXML

Buenas a todos,

De nuevo, vengo a hacer una preguntilla. Me he volcado en un proyecto nuevo que va a plantearme muchas dudas. Utilizo por primera vez DomXML y voy intentando entenderlo paso a paso. No llevo ni 10 minutos y ya tengo el primer problema.

Con un XML tan sencillo como este.
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:template>
  3.     <pfx2:OPICSInterface>
  4.     </pfx2:OPICSInterface>
  5. </xsl:template>

Ya tengo el primer problema. Mi código simplemente rescata el nodo raiz y hace un foreach de cada hijo de dicho nodo:
Código PHP:
Ver original
  1. <?php
  2. $dom = new DOMDocument();
  3. $dom->load("../../files/XSD/Bonds_I-O.xml");
  4. $root = $dom->documentElement;
  5. echo $root->tagName;
  6. foreach ($root->childNodes as $child) {
  7.     echo $child->tagName;
  8. }
  9. ?>

Tan sencillo como eso, pero me da la siguiente salida:
Código:
xsl:template
Notice: Undefined property: DOMText::$tagName in C:\xampp\htdocs\BugTracker\php\inc\Jobs.php on line 19
pfx2:OPICSInterface
Notice: Undefined property: DOMText::$tagName in C:\xampp\htdocs\BugTracker\php\inc\Jobs.php on line 19
Haciendo algunas pruebas, me he dado cuenta que el error se debe a que toma el formateo (las tabulaciones) del XML como elementos hijos del nodo raíz, del tipo XMLText, ya que si pongo todo el XML en una única línea no da ningún problema.

Alguien sabe cómo hay que hacer para no leer los espacios en blanco, saltos de línea, tabulaciones... a la hora de abrir el fichero? O si se puede de alguna forma, saltar dichos espacios a la hora de recorrerlo?

Muchas gracias de antemano, iré poniendo en este post más dudillas que me salgan. Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #2 (permalink)  
Antiguo 08/09/2011, 04:02
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Dudas con DomXML

De momento lo tengo solucionado con get_class:
Código PHP:
Ver original
  1. if (get_class($child) == "DOMElement")

Pero no me parece una buena solución, ya que no siempre va a ser tan sencillo el código, pretendo hacer un código recursivo bastante complejo. A ver si alguien se le ocurre algo.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 08/09/2011, 04:15
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: Dudas con DomXML

Prueba setear a false DOMDocument::preserveWhiteSpace.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 08/09/2011, 05:29
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Dudas con DomXML

Perfecto, justo lo que buscaba, sabía que tenía que haber una forma directa, pero no daba con ella. Gracias, @masterpuppet.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: domxml
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 06:38.