tutorial simplexmlelement namespace leer imprimir ejemplo create con array php xml xml-parsing simplexml xml-namespaces

simplexmlelement - string to xml php



PHP SimpleXml-Recuperando atributos de niƱos con espacios de nombres (2)

Prueba esto

$xml = new SimpleXmlElement($feed); foreach ($xml->entry as $entry) { $namespaces = $entry->getNameSpaces(true); $ai = $entry->children($namespaces[''ai'']); foreach ($ai->ocurrence as $o) { $date=$o->attributes(); echo $date[''date'']; echo "<br/>"; } }

Estoy analizando un feed externo de Atom, algunas entradas tienen una colección de niños con espacio de nombres: no puedo recuperar los atributos de esos niños. Ejemplo abreviado:

$feed = <<<EOD <feed xmlns="http://www.w3.org/2005/Atom" xmlns:ai="http://activeinterface.com/thincms/2012"> <entry> <title>Some Title</title> <ai:image>path/to/some/image</ai:image> <ai:ocurrence dateid="20120622" date="Fri, June 22, 2012" time="6:00 pm" /> <ai:ocurrence dateid="20120720" date="Fri, July 20, 2012" time="6:00 pm" /> </entry> </feed> EOD; $xml = new SimpleXmlElement($feed); foreach ($xml->entry as $entry){ echo $entry->title; $namespaces = $entry->getNameSpaces(true); $ai = $entry->children($namespaces[''ai'']); echo $ai->image; foreach($ai->ocurrence as $o){ echo $o[''date'']; } }

Todo menos la recuperación de atributos de los niños con espacios de nombres funciona bien: si los nombres de las etiquetas de los niños no están en el espacio de nombres, funciona bien. Si agarra el valor del nodo (en lugar de un atributo), incluso si está en el espacio de nombres, funciona bien. ¿Qué me estoy perdiendo?


no sé por qué, pero aparentemente el acceso a la matriz no funcionará aquí ... necesita el método de atributos:

echo $o->attributes()->date;