PHP SimpleXML+Obtener atributo
(7)
Debe formatear su XML
correctamente y dejar que se ejecute utilizando <root></root>
o <document></document>
cualquier cosa. Consulte las especificaciones y ejemplos de XML en http://php.net/manual/en/function.simplexml-load-string.php
$xml = ''<?xml version="1.0" ?>
<root>
<show id="8511">
<name>The Big Bang Theory</name>
<link>http://www.tvrage.com/The_Big_Bang_Theory</link>
<started>2007-09-24</started>
<country>USA</country>
<latestepisode>
<number>05x23</number>
<title>The Launch Acceleration</title>
</latestepisode>
</show>
</root>'';
$xml = simplexml_load_string ( $xml );
var_dump ($xml->show->attributes ()->id);
El XML que estoy leyendo se ve así:
<show id="8511">
<name>The Big Bang Theory</name>
<link>http://www.tvrage.com/The_Big_Bang_Theory</link>
<started>2007-09-24</started>
<country>USA</country>
<latestepisode>
<number>05x23</number>
<title>The Launch Acceleration</title>
</latestepisode>
</show>
Para obtener (por ejemplo) el número del último episodio, haría:
$ep = $xml->latestepisode[0]->number;
Esto funciona bien. Pero, ¿qué haría para obtener el ID de <show id="8511">
?
He intentado algo como:
$id = $xml->show;
$id = $xml->show[0];
Pero ninguno funcionó.
Actualizar
Mi fragmento de código:
$url = "http://services.tvrage.com/feeds/episodeinfo.php?show=".$showName;
$result = file_get_contents($url);
$xml = new SimpleXMLElement($result);
//still doesnt work
$id = $xml->show->attributes()->id;
$ep = $xml->latestepisode[0]->number;
echo ($id);
O yo. XML:
http://services.tvrage.com/feeds/episodeinfo.php?show=The.Big.Bang.Theory
Esto debería funcionar. Debe usar los atributos con el tipo (si se usa el valor de cadena (cadena))
$id = (string) $xml->show->attributes()->id;
var_dump($id);
O esto:
$id = strip_tags($xml->show->attributes()->id);
var_dump($id);
Esto debería funcionar.
$id = $xml["id"];
Su raíz XML se convierte en la raíz del objeto SimpleXML; Su código está llamando a una raíz de chid con el nombre de ''show'', que no existe.
También puede usar este enlace para algunos tutoriales: http://php.net/manual/en/simplexml.examples-basic.php
Necesitas usar attributes para obtener los atributos.
$id = $xml->show->attributes()->id;
También puedes hacer esto:
$attr = $xml->show->attributes();
$id = $attr[''id''];
O puedes probar esto:
$id = $xml->show[''id''];
Mirando la edición a su pregunta ( <show>
es su elemento raíz), intente esto:
$id = $xml->attributes()->id;
O
$attr = $xml->attributes();
$id = $attr[''id''];
O
$id = $xml[''id''];
Una vez que haya cargado correctamente el archivo xml con el objeto SimpleXML, puede hacer una print_r($xml_variable)
y puede encontrar fácilmente a qué atributos puede acceder. Como dijeron otros usuarios, $xml[''id'']
también me funcionó.
prueba esto
$id = (int)$xml->show->attributes()->id;