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

标签 php xml namespaces domdocument

我有一个产品的 XML 提要,我使用 DOMDocument 将其分解为较小的 XML 文件。和 DOMXpath在 PHP 中。

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

我试过 $node->removeAttributeNS( 'myurl' , '' )正确删除 xmlns来自节点的属性,但会创建一个默认命名空间,因此输出看起来像

<default:node />

想要删除与准备注册新命名空间的导入节点相关联的命名空间的任何痕迹。

感谢收到任何提示。

最佳答案

我不确定这是否真的是您要找的,但您是否考虑过使用 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);

有更多函数可用于处理 php.net 上的 xml

关于php - 导入 XML 节点并删除命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4746748/

相关文章:

php - 将新数据发布到数据库

Javascript 在调用函数后不起作用

php - 基于 session 的登录无法正常工作

xml - 提取存储在 postgresql 表中的 XML 文件

javascript - 为什么换行符 ( ) 通过客户端上的 XSLT 在 Google Chrome 浏览器中正确呈现字符?

c# - 我如何知道哪个程序集包含给定的命名空间? - C#

c# - 单个 using 语句,多个 MVC View

php - WHERE MATCH (name) AGAINST ('term' ) 不起作用?

XML 和 XSLT : need it to sort only certain child nodes

logging - 在 clojure 中获取调用者命名空间