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 26Al 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
