php - 枚举 PHP DOMDocument 对象的注册命名空间

标签 php simplexml domdocument

对于我的一个项目,我使用 DOMDocument 类来加载和操作 XML 文档。

我需要检索文档中使用的每个命名空间;但是,我找不到该怎么做。 DOMDocument 类具有获取 URI 的命名空间前缀或命名空间前缀的 URI 的方法,但我没有看到任何实际枚举已注册命名空间的方法。

SimpleXML 库有一个 getNamespaces() 方法。 DOMDocument 是否有等效项?

最佳答案

据我所知,DOM 没有这样的功能。我简要地查看了 SimpleXml 的源代码,我认为它迭代加载的 XML 并收集命名空间(我的 C 非常糟糕)。为此,最简单的解决方案是通过将 DOM dom 导入 SimpleXml 来获取命名空间。可能是这样的:

class DomUtils
{
    public static function getNamespaces($dom)
    {
        $sxe = simplexml_import_dom($dom);
        return $sxe->getNamespaces(); 
    }

    public static function getDocNamespaces($dom)
    {
        $sxe = simplexml_import_dom($dom);
        return $sxe->getDocNamespaces();
    }
}

您还可以尝试使用 XPath 获取所有命名空间。请参阅以下问题和答案:

关于php - 枚举 PHP DOMDocument 对象的注册命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2572365/

相关文章:

javascript - 如何将 PHP 变量传递给 AngularJS 配置

php - 使用 SimpleXML 读取 RSS 提要

php xpath根据多个属性和父属性检索属性值

php - 如何将 HTML 插入到 PHP DOMNode?

php - 如何以html无序列表形式而不是xml形式打印这些结果?

php - 使用php domxml读取xml文件时出错?

php - CakePHP 节省约定

javascript - 如何解析 XML AJAX 响应

php - 在 WooCommerce 中为产品数量添加千位分隔符

php - SimpleXML 1 个元素中有更多标签