2011-07-24 23 views
5

namespaced estoy usando SimpleXML para crear un canal RSS para productos de Google y quiero crear un espacio de nombres del niño, pero cuando lo haga, por ejemplosencilla xml Agregar hijo

$item->addChild('g:id', 'myid'); 

añade

<id>myid</id> 

en lugar de

<g:id></g:id> 

Además he añadido en la parte superior

<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0"> 

¿Cómo puedo agregar niños con espacios de nombres?

Respuesta

10

El espacio de nombres es el tercer parámetro a addChild()

$item->addChild('id', 'myid', 'http://base.google.com/ns/1.0'); 

See the documentation para más información.

+0

que trabajó para mí como '$ Item-> addChild ('g: id', 'myid', 'http://base.google.com/ns/1.0'); ' –

+0

Sí, porque lo descubrí incluso antes de publicar su respuesta y su respuesta fue parcialmente útil de todos modos . Pero voy a devolverte la respuesta de aceptación por el esfuerzo. Gracias :) –

+0

php documentación dice muy poco sobre esto. Esto generará algo que se ve así: myid Algo que no veo en la documentación de php pero que he visto en algún código, doblar el prefijo del espacio de nombres parece hacer el trabajo. $ item-> addChild ('g: g: id', 'myid'); dará como resultado myid Sería bueno si algún experto en xml pudiera confirmar que este es un enfoque aceptable. –

2

sin saber si se trata de una manera oficial de hacer esto, me encontré con algo que hizo el trabajo:

$item->addChild('g:g:id', 'myid'); 

encontrado esto en el código http://www.sanwebe.com/2013/08/creating-rss-feed-using-php-simplexml

+1

Tenga en cuenta que esto no establece realmente el espacio de nombre para el nodo, aunque el resultado cuando se serializa con ['SimpleXMLElement-> asXML()'] (http://php.net/SimpleXMLElement.asXML) es equivalente. Pruebe '$ item-> children ('g', TRUE);'. – outis

Cuestiones relacionadas