Hola a todos!, tengo este codigo php que me genera un XML con los datos que le paos en un array:
Código PHP:
function GenerarXML($array_var)
{
$xml = new DomDocument('1.0', 'UTF-8');
$array=array();
$array=$array_var;
while ($variables = current($array))
{
$clave= key($array);
$valor=$array[$clave];
//echo $clave.': '.$valor.'<br />';
//por cada clave creamos un padre
$padre = $xml->createElement($clave);
$padre = $xml->appendChild($padre);
//por cada padre creamos un hijo con el valor que pertenece a la clave
$hijo=$xml->createElement('value',$valor);
$hijo =$padre->appendChild($hijo);
next($array);
}
$xml->formatOutput = true;
$strings_xml = $xml->saveXML();
$xml->save('miarchivoxml.xml');
}
y luego tengo este codigo javascript para recuperar el nodo que quiero:
Código:
<script>
//-----------------------------------LEE DATOS DE UN XML----------------------------
function leerDatos(etiqueta)
{
if (oXML.readyState == 4)
{
var xml = oXML.responseXML;
var item = xml.getElementsByTagName(etiqueta)[0];
var txt = item.getElementsByTagName('value')[0].firstChild.data;
alert(txt);
}
}
//-----------------------------------CREA EL OBJETO XMLHttpRequest-----------------
function AJAXCrearObjeto()
{
var obj;
if(window.XMLHttpRequest)
{ // no es IE
obj = new XMLHttpRequest();
}
else
{ // Es IE o no tiene el objeto
try
{
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert('El navegador utilizado no está soportado');
}
}
return obj;
}
//-------------------------CREAMOS OBJETO, ABRIMOS EL XML Y LEEMOS-----------------
oXML = AJAXCrearObjeto();
oXML.open('get', 'miarchivoxml.xml');
oXML.onreadystatechange = function()
{
leerDatos('estadoProyecto');
}
oXML.send('');
</script>
y el XML que me genera:
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<estadoProyecto>
<value>4</value>
</estadoProyecto>
funciona bien pero si añado más ya no funciona:
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<estadoProyecto>
<value>4</value>
</estadoProyecto>
<fff>
<value>4</value>
</fff>
entonces he estado probando cambiando:
Código:
//esto:
var xml = oXML.responseXML;
//por esto:
var xml = oXML.responseXML.documentElement;
pero el principal problema viene porque mi xml no tiene las etiquetas <xml></xml>:
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<estadoProyecto>
<value>4</value>
</estadoProyecto>
<fff>
<value>4</value>
</fff>
</xml>
Así si funciona pero no se como generarlo con esas etiquetas, he estado buscando pero en cuanto en la búsqueda den google pongo <xml>, etiquetas o cosas así directamente me sale cómo crear xml pero no cómo añadir esa etiqueta en concreto, ¿alguien sabe porqué y qué tengo que hacer?, he intentado crearlas como un element mas pero me añade :<xml/>
uso Chrome por cierto