Я пытаюсь использовать SimpleXML-метод addChild для SimpleXMLElement (фактически SimpleXMLIterator, который является подклассом SimpleXMLElement) для добавления дочерних элементов.PHP SimpleXML-> addChild - нежелательный пустой атрибут пространства имен
Моя проблема заключается в том, что исходный документ содержит смесь элементов с пространствами имен и без них. Здесь не это простой (не каламбур) пример:
<?xml version="1.0" encoding="UTF-8"?>
<ns1:a xmlns:ns1="http://www.abc.com">
</ns1:a>
Код РНР:
$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>
While бо го веб-браузера, а также XML-парсеров (например, Xerces), похоже, не обращают внимания на эту лишнюю разметку, я нахожу ее немного раздражающей, что я не могу сказать, чтобы она прекратила это делать.
У кого-нибудь есть решение или я уже реагирую?
:}
Rik, хотя по-прежнему требуется, чтобы у меня было пространство имен, похоже, что ваше решение хорошо подходит, особенно если я имею дело с HTML. Спасибо за ваш быстрый ответ и ответ, очень ценится. : D –