Перечислите зарегистрированные пространства имен объекта PHP DOMDocument

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

Я должен был бы получить каждое пространство имен, используемое в документе; однако, я не могу найти, как я сделал бы это. DOMDocument класс имеет методы для получения префикса пространства имен URI или URI префикса пространства имен, но я не видел ничего для фактического перечисления зарегистрированных пространств имен.

SimpleXML библиотека имеет a getNamespaces() метод для этого. Есть ли эквивалент для DOMDocument?

5
задан zneak 3 April 2010 в 19:19
поделиться

1 ответ

DOM не имеет такой функции afaik. Я кратко просмотрел исходный код 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. См. Следующий вопрос и ответы:

6
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: