Main Menu:

Main Content:

Páginas: [1]

DOM XML ayuda plz T_T

DOM XML ayuda plz T_T
El 15 de Nov de 2008 a las 10:00

Ante todo buenas, vengo a darme una vuelta por aqui pues tengo un problema que quisiera compartir a ver si podrían darme una mano. Tengo un documento xml externo, un php que lo carga y debe extraer solamente un nodo pero al parecer estoy cometiendo un error y no se como resolverlo.

Este es el xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE WebSacoDoc SYSTEM "base_xml_saco.dtd">
<WebSacoDoc>
   <contexto id="01">
      <titulo>quienes somos</titulo>
      <texto>Aqui el txto de quienes somos</texto>
      <foto>aqui la direccion de la foto o imagen</foto>
   </contexto>
   <contexto id="02">
      <titulo>mision / vision</titulo>
      <texto>Aqui el texto de mision / vision</texto>
      <foto>aqui la direccion de la foto o imagen</foto>
   </contexto>
   <contexto id="03">
      <titulo>trayectoria</titulo>
      <texto>Aqui el txto de trayectoria</texto>
      <foto>aqui la direccion de la foto o imagen</foto>
   </contexto>
   <contexto id="04">
      <titulo>Servicios</titulo>
      <texto>Aqui el txto de servicios</texto>
      <foto>aqui la direccion de la foto o imagen</foto>
   </contexto>
</WebSacoDoc>

este es el php

Código:
<?php
   
/*header('Content-Type:Text/xml');*/
    
$car = new DOMDocument();
    
$car->load('inicio.xml');
   
$idrecogido 02;
   foreach (
$car->getElementsByTagName('contexto') as $nodo){
   
//capturamos el nodo contexto deseado
      
if ($idrecogido == $nodo->getAttribute(id)){
         
$muestra $nodo;
      }
   }
   
$imp = new DOMImplementation;   //creo la implementacion respectiva
   
$dtd $imp->createDocumentType('WebSacoDoc''''base_xml_saco.dtd');
   
$dom $imp->createDocument(''''$dtd);   //creo el documento respectivamente
   
$dom->encoding 'UTF-8';
   
$dom->standalone false;

   
$element $dom->createElement('WebSacoDoc');   //creo el elemento WebSacoDoc
   
$dom->appendChild($element);   //lo adjunto al xml
   
$nivel $dom->documentElement;   //entro al nivel de WebSacoDoc
   
$captor $nivel->getElementsByTagName('WebSacoDoc');
   
$nivel->appendChild($muestra);   //intento adjuntar el nodo con sus child en el elemento WebSacoDoc (linea de falla)
   
echo $dom->saveXML;

y este es el error que me bota

Código:
Fatal error: Uncaught exception 'DOMException' with message 'Wrong Document Error' in C:\AppServ\www\inicio\XMLemb\inicio2.php:26 Stack trace: #0 C:\AppServ\www\inicio\XMLemb\inicio2.php(26): DOMNode->appendChild(Object(DOMElement)) #1 {main} thrown in C:\AppServ\www\inicio\XMLemb\inicio2.php on line 26

Al parecer no puede adjuntarlo correctamente porque lo recibe como un objeto y segun la documentcaion de php lo que debe recibir es un nodo. Yo crei que lo que tenia en $muestra era el nodo contexto 02 y este junto con sus child se juntarian al nuevo documento. Como podría hacer para realizar correctamente esta operación.

Gracias de antemano
  • Leo
  • Administratore
  • Iniciado
  • Mensajes: 9
  • Ver Perfil
Re: DOM XML ayuda plz T_T
Respuesta #1 El 19 de Nov de 2008 a las 06:21

Buenas X-ecutor, sería mucho más sencillo que trates el XML como un "texto plano" de esa forma te vas ahorrar muchos dolores de cabeza Güiño

En tu caso usaría preg_match_all() para separar los nodos del XML como etiquetas HTML y de ahí obtener lo que quieres.

Saludos Capo
Páginas: [1]