导入XML节点并删除命名空间

时间:2011-01-20 11:50:00

标签: php xml namespaces domdocument

我有一个产品的XML Feed,我在PHP中使用DOMDocumentDOMXpath分解为较小的XML文件。

我创建新的XML文件,添加根节点,然后从主Feed导入所有深度复制的节点。我想从导入的节点中删除命名空间。

我尝试$node->removeAttributeNS( 'myurl' , '' )从节点中正确删除xmlns属性但创建了默认命名空间,因此输出看起来像

<default:node />

希望删除与导入节点关联的任何名称空间跟踪,以便注册新的名称空间。

感激不尽的任何提示。

1 个答案:

答案 0 :(得分:0)

我不确定这是否实际上是您正在寻找的但是您是否考虑过使用xml_parser_create()或`xml_parser_create_ns()来创建解析器,然后设置自己的处理函数来删除命名空间。 / p>

$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);

可以使用更多函数来处理在php.net上找到的xml