2011-07-24 22 views
5

Używam SimpleXML aby utworzyć kanał RSS dla produktów Google i chcę stworzyć przestrzeni nazw dziecko, ale kiedy zrobić na przykładproste xml dodaj przestrzeni nazw dziecko

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

dodaje

<id>myid</id> 

zamiast

<g:id></g:id> 

Poza tym dodałem na najwyższym

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

Jak mogę dodać dzieci z nazwami?

Odpowiedz

10

Przestrzeń nazw jest trzeci parametr addChild()

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

See the documentation aby uzyskać więcej informacji.

+0

pracował dla mnie jak '$ item-> addChild ('g: id', 'myid', 'http://base.google.com/ns/1.0'); ' –

+0

Tak, ponieważ wymyśliłem to jeszcze zanim opublikowałeś swoją odpowiedź, a twoja odpowiedź była mimo wszystko częściowo pomocna . Ale zamierzam przywrócić odpowiedź z powodu wysiłku. Dziękuję :) –

+0

Dokumentacja php mówi bardzo mało na ten temat. to wygeneruje coś, co wygląda tak: myid Coś, czego nie widzę w dokumentacji php, ale widziałem w pewnym kodzie tam, podwojenie prefiksu przestrzeni nazw zdaje się wykonywać to zadanie. $ item-> addChild ('g: g: id', 'myid'); wyświetli myid Byłoby miło, gdyby jakiś ekspert xml mógł potwierdzić, że jest to akceptowalne. –

2

Nie wiedząc, czy jest to oficjalny sposób to zrobić, znalazłem coś, co nie praca:

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

Znalazłem to na tym kodem http://www.sanwebe.com/2013/08/creating-rss-feed-using-php-simplexml

+1

Należy zauważyć, że to faktycznie nie określa przestrzeni nazw dla węzła, chociaż wynik w przypadku serializacji z ['SimpleXMLElement-> asXML()'] (http://php.net/SimpleXMLElement.asXML) jest równoważny. Wypróbuj '$ item-> children ('g', TRUE);'. – outis

Powiązane problemy