2011-01-20 2 views
2

У меня есть XML-поток продуктов, которые я разбиваю на более мелкие XML-файлы, используя DOMDocument и DOMXpath в PHP.Импорт узлов XML и удаление пространства имен

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

Я попытался $node->removeAttributeNS('myurl' , ''), правильно удаляет атрибут xmlns из узла, но создает пространство имен по умолчанию, так что результат выглядит

<default:node /> 

хотел бы, чтобы удалить любые следы пространств имен, связанные с импортируемым узлом готов к регистрации новые пространства имен.

Любые советы с благодарностью получены.

ответ

0

Я не уверен, действительно ли это то, что вы ищете, но подумали ли вы об использовании xml_parser_create() или `xml_parser_create_ns(), чтобы создать парсер, а затем установить собственные функции обработки для удаления пространств имен.

$xmlParser = xml_parser_create(); 
xml_set_element_handler($xmlParser, "startElementHandler", "endElementHandler"); // start and end ElementHandlers are call backs to your handling functions that handle the beginning and ending of tags. 
xml_set_default_handler($xmlParser, "handleMe"); // handleMe is a callback to your function to handle the data inside the tags. 
xml_parse($xmlParser, $xmlData); 

Есть несколько функций, которые могут быть использованы для обработки XML найдены в php.net