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>
y esta es la php que extrae contruye el nuevo documento y trata de insertar el nodo capturado
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 echo $dom->saveXML;
y este es el error que 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