2011-07-24 4 views
5

Я использую SimpleXML создать RSS-канал для продуктов Google, и я хочу, чтобы создать ребенок, но пространство имен, когда я, напримерпростого XML добавить пространство имен ребенка

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

добавляет

<id>myid</id> 

вместо

<g:id></g:id> 

Кроме того, я добавил в верхней

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

Как добавить детей с именами?

ответ

10

Пространство имен является третьим параметром addChild()

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

See the documentation для получения дополнительной информации.

+0

он работал для меня, как '$ item-> addChild ('g: id', 'myid', 'http://base.google.com/ns/1.0'); ' –

+0

Да, потому что я понял это еще до того, как вы отправили свой ответ, и ваш ответ был частично полезным в любом случае , Но я собираюсь дать вам ответ на принятие решения из-за усилий. Спасибо :) –

+0

php-документация говорит об этом очень мало. это сгенерирует что-то похожее на это: myid Что-то я не вижу в документации php, но я видел в некотором коде там, удваивая префикс пространства имен, похоже, выполняет эту работу. $ item-> addChild ('g: g: id', 'myid'); выведет myid Было бы неплохо, если бы какой-либо эксперт xml мог подтвердить, что это приемлемый аспект. –

2

Не зная, если это официальный способ сделать это, я нашел то, что сделал свою работу:

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

Нашел на этом коде http://www.sanwebe.com/2013/08/creating-rss-feed-using-php-simplexml

+1

Обратите внимание, что это фактически не устанавливает пространство имен для узла, хотя результат при сериализации с помощью ['SimpleXMLElement-> asXML()'] (http://php.net/SimpleXMLElement.asXML) эквивалентен. Попробуйте '$ item-> children ('g', TRUE);'. – outis

Смежные вопросы