Foros del Web » Programando para Internet » PHP »

DOM escribe todo en un mismo renglon

Estas en el tema de DOM escribe todo en un mismo renglon en el foro de PHP en Foros del Web. Hola. Tengo creado un xml via php, que espacia muy bien los tags xml, con saltos de linea. Asi: <galeria> <item> <nivel2> </nivel2> </item> <item> ...
  #1 (permalink)  
Antiguo 26/08/2009, 10:06
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Hola. Tengo creado un xml via php, que espacia muy bien los tags xml, con saltos de linea. Asi:

<galeria>

<item>
<nivel2>
</nivel2>
</item>

<item>
<nivel2>
</nivel2>
</item>

</galeria>

En cambio, al actualizar con un nuevo item, el DOM escribe asi:

<item> <nivel2> </nivel2></item>

El resultado es mucho menos leible. Y de las muuchas paginas que consulte, solo una mencionaba el problema, y de pasada.

Yo estoy guardando así:

$xml->formatOutput = true;
$xml->save($GLOBALS['archivo_xml']);

Que pasa?

Por si ayuda el dato, cargo el archivo asi:

$xml = new DOMDocument("1.0", "UTF-8");
$xml->load($archivo_xml);


Y he intentado estas dos lineas en diferentes momentos, pero no dan formato:
//$xml->preserveWhiteSpace = false;
$xml->formatOutput = true;

Lo tengo! Y les cuento, porque no hay data en otros foros y me queme las pestañas buscando solucion.

Se trata de un problema de prioridades al usar load para cargar un xml existente:

$xml = new DOMDocument();
$xml->preserveWhiteSpace = false; // ESTO ES LO IMPORTANTE!!!
$xml->load($archivo_xml);

Antes de load hay que escribir la funcion de whitespace=false

Y luego si la que da el formato ok:

$xml->formatOutput = true;
$xml->save($GLOBALS['archivo_xml']);

Última edición por GatorV; 26/08/2009 a las 19:17
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 00:39.