对于我的一个项目,我使用 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/