$root = $xml->createElementNS('myNS', 'root');
root
не должно находиться в пространстве имен myNS
. В исходном примере это не пространство имен.
$x = $xml->createElementNS('myNS', 'x', 'test');
Задайте в параметреqualName значение p:x
вместо x
, чтобы предложить алгоритму сериализации использовать p
в качестве префикса для этого пространства имен. Однако обратите внимание, что для читателя, поддерживающего XML с пространствами имен, нет семантической разницы, используется ли p:
или нет.
Это приведет к тому, что объявление xmlns:p
будет выведено для элемента <p:x>
(первого, которому это нужно). Если вы хотите, чтобы объявление вместо этого было в корневом элементе (опять же, нет никакой разницы с читателем XML-with-Namespaces), вам придется setAttributeNS
сделать это явно. например.:
$root = $xml->createElementNS(null, 'root');
$xml->appendChild($root);
$x = $xml->createElementNS('myNS', 'p:x', 'test');
$root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:p', 'myNS');
$root->appendChild($x);
person
bobince
schedule
27.08.2010