Fork me on GitHub

Miquel Camps Orteza

Soy programador web. Estoy especializado en desarrollo web (php, js). Estoy aprendiendo a desarrollar apps para iphone/ipad.
Organizo betabeers en Madrid.
Sobre mí     Metas     Hacks     Contactar     LinkedIn     Twitter    
Inicio

Problema a la hora de parsear xml con cdata en php5

Hoy, estaba feliz intentando programar un script php para convertir un xml a una array utilizando la función simplexml_load_string, hasta que por causas que desconozco todavía, la array que obtenía era incompleta sin el valor de los CDATA.

Ejemplo xml:

<?xml version=’1.0′ encoding=’UTF-8′?><response status=”success”>
<artist weight=”95″><![CDATA[Despistaos]]></artist>
<artist weight=”95″><![CDATA[El Canto Del Loco]]></artist>
</response>

Resultado Array:

SimpleXMLElement Object
(
[@attributes] => Array
(
[status] => success
)
[artist] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[weight] => 95
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[weight] => 95
)
)
)

Apunto de tirarme al pozo sin agua, txarly me pasó este enlace donde explican la solución:

Si vas a  leer directamente un fichero o una url de un xml:

$t_xml = simplexml_load_file( $file_or_url, ‘SimpleXMLElement’, LIBXML_NOCDATA );

O si vas a leer un string con el contenido de un xml:

$t_xml = simplexml_load_string( $str_xml, ‘SimpleXMLElement’, LIBXML_NOCDATA );

Resultado deseado:

SimpleXMLElement Object
(
[@attributes] => Array
(
[status] => success
)
[artist] => Array
(
[0] => Despistaos
[1] => El Canto Del Loco
)
)

diciembre 15, 2008
Sigueme en twitter Suscribete por RSS Suscribete por email
Temas relacionados
Deja un comentario







Comentarios
  1. shakaran

    Hola, estoy trabajando con un parseador de un lenguaje inventado para XML y sería bastante útil si quisieras hacer algún artículo con un ejemplo de como lo utilizas tú (por ejemplo para parsear información de discos) ya que podría extraporlarlo a mi ejemplo y sería enormemente útil (ya que no encuentro mucha documentación a parte de la básica de PHP y algún ejemplo básico por google).

    Saludos y buen artículo.