php xml simplexml

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

Creo que esto debería funcionar

$id = $xml->show->attributes()->id;


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;