simple parser modificar importar conectar con como cargar buscar archivos abrir php xml

php - parser - XML simple-Tratar con dos puntos en nodos



modificar xml con php (4)

¿Estás tratando con un espacio de nombres? Creo que necesitas usar el método -> children.

$ns_dc = $item->children(''http://namespace.org/'');

¿Puede proporcionar un fragmento con la declaración xml?

Estoy tratando de leer una fuente RSS de Flickr pero tiene algunos nodos que no se pueden leer con Simple XML ( media:thumbnail , flickr:profile , etc.).

¿Cómo puedo solucionar esto? Me duele la cabeza cuando miro la documentación para el DOM. Así que me gustaría evitarlo ya que no quiero aprender.

Estoy tratando de obtener la miniatura por cierto.


Con la última versión, ahora puede hacer referencia a los nodos de dos puntos con llaves.

$item->{''itunes:duration''}


La solución se explica en este bonito artículo . Necesita el método children() para acceder a los elementos XML que contienen un espacio de nombres. Este fragmento de código se cita del artículo:

$feed = simplexml_load_file(''http://www.sitepoint.com/recent.rdf''); foreach ($feed->item as $item) { $ns_dc = $item->children(''http://purl.org/dc/elements/1.1/''); echo $ns_dc->date; }


Un método aún más simple que usa PHP para acceder a los nodos XML con espacios de nombre sin declarar un espacio de nombres es ...

Para obtener el valor de <su:authorEmail > de la siguiente fuente

<item> <title>My important article</title> <pubDate>Mon, 29 Feb 2017 00:00:00 +0000</pubDate> <link>https://myxmlsource.com/32984</link> <guid>https://myxmlsource.com/32984</guid> <author>Blogs, Jo</author> <su:departments> <su:department>Human Affairs</su:department> </su:departments> <su:authorHash>4f329b923419b3cb2c654d615e22588c</su:authorHash> <su:authorEmail>hIwW14tLc+4l/oo7agmRrcjwe531u+mO/3IG3xe5jMg=</su:authorEmail> <dc:identifier>/32984/Download/0032984-11042.docx</dc:identifier> <dc:format>Journal article</dc:format> <dc:creator>Blogs, Jo</dc:creator> <slash:comments>0</slash:comments> </item>

Usa el siguiente código:

$rss = new DOMDocument(); $rss->load(''https://myxmlsource.com/rss/xml''); $nodes = $rss->getElementsByTagName(''item''); foreach ($nodes as $node) { $title = $node->getElementsByTagName(''title'')->item(0)->nodeValue; $author = $node->getElementsByTagName(''author'')->item(0)->nodeValue; $authorHash = $node->getElementsByTagName(''authorHash'')->item(0)->nodeValue; $department = $node->getElementsByTagName(''department'')->item(0)->nodeValue; $email = decryptEmail($node->getElementsByTagName(''authorEmail'')->item(0)->nodeValue); }