Импорт узлов XML и удаление пространства имен - PullRequest
2 голосов
/ 20 января 2011

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

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

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

<default:node />

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

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

1 Ответ

0 голосов
/ 05 апреля 2011

Я не уверен, действительно ли это то, что вы ищете, но задумывались ли вы об использовании 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

...