2010-01-20 16 views
5

Noche chicos.PHP namespace simplexml problems

En primer lugar decir, he leído How do I parse XML containing custom namespaces using SimpleXML?.

Estoy analizando un documento XML desde una fuente, no importa, y usan un espacio de nombre personalizado.

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au"> 
    <channel> 
    <item> 
    <link>qweqwe</link> 
    <moshtix:genre>asdasd</moshtix:genre> 
... 

Por ejemplo. Cuando analizo utilizando SimpleXML, ninguno de los elementos mostix: namespace se muestran ni se puede acceder. Probablemente una solución realmente simple, pero ¿alguna idea, chicos?

Respuesta

6

Normalmente, las personas usan children().

$rss = simplexml_load_string(
    '<?xml version="1.0" encoding="utf-8"?> 
    <rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au"> 
     <channel> 
      <link>qweqwe</link> 
      <moshtix:genre>asdasd</moshtix:genre> 
     </channel> 
    </rss>' 
); 

foreach ($rss->channel as $channel) 
{ 
    echo 'link: ', $channel->link, "\n"; 
    echo 'genre: ', $channel->children('moshtix', true)->genre, "\n"; 
} 
+0

Mientras que trabaja para el extracto de cada elemento, que es útil, mucho del tiempo que necesito para realizar una json_encode y simplemente abrigarse cada elemento válido individual y almacenarlos en una base de datos. Pero cuando hago esto, no reconoce los elementos de espacio de nombres personalizados. ¿Algunas ideas? Los datos dentro de cada varían demasiado para ingresar manualmente cada uno. – James

+0

Se las arregló para arreglarlo con el escaneo de algunos foreach a través de cada elemento;) – James

+1

Siempre me asombra cuando las personas dicen que están convirtiendo XML en JSON sin querer preocuparse por la estructura. ¿Por qué no almacenarlo como, bueno, XML? – IMSoP