Я пытаюсь использовать метод SimpleXML addChild для SimpleXMLElement (на самом деле SimpleXMLIterator, который является подклассом SimpleXMLElement) для добавления дочерних элементов.
Моя проблема заключается в том, что исходный документ содержит смесь элементов спространства имен и без.Вот пример simple (без каламбура):
<?xml version="1.0" encoding="UTF-8"?>
<ns1:a xmlns:ns1="http://www.abc.com">
</ns1:a>
Код PHP:
$it = new SimpleXMLIterator ('./test.xml', 0, true);
$it->addChild('d', 'another!'); // adds new child element to parent's NS
$it->addChild('c', 'no namespace for me!', ''); // puts xmlns="" every time :(
//output xml in response:
header('Content-Type: text/xml');
echo $it->saveXML();
Проблема, как говорится в комментарии, заключается в том, что еслиЯ хочу разместить дочерний элемент без пространства имен внутри родительского элемента с пространством имен, каждый раз я получаю пустой атрибут пространства имен XML (вывод приведенного выше кода PHP):
<?xml version="1.0" encoding="UTF-8"?>
<ns1:a xmlns:ns1="http://www.abc.com">
<ns1:d>another!</ns1:d>
<c xmlns="">no namespace for me!</c>
</ns1:a>
Хотя оба веб-браузера какпарсеры XML (например, Xerces), похоже, не возражают против этой избыточной разметки, я нахожу это немного раздражающим, потому что я не могу сказать, чтобы он прекратил это делать.
У кого-то есть решение, или ячрезмерно реагировать?
:}