Intereting Posts
Неизвестно: не удалось открыть окно «0ff» (include_path = '.: / Tmp: / usr / lib / php: / usr / local / lib / php') в Unknown в строке 0 Ключи CodeIgniter для библиотеки Active Record Самый безопасный способ передачи переменных между двумя страницами с PHP PHP xml-файл с исправлением ошибок SimpleXML Как отправить данные с помощью jQuery Получение подобной долготы и широты из базы данных 999 Код ошибки в запросе HEAD для LinkedIn Параметр времени часового пояса для строки (имя часового пояса) (facebook api) Последние элементы XML не удаляются из XML загрузить ход с последующей обработкой Вызов PHP-документа с SSH включает в себя получение переменной Mysql: запрос обнаружения разрыва не обнаруживает пробелы php-код, необходимый для приложения Android, который запрашивает базу данных Как получить электронную почту от трубы до программы переместить выбранный элемент из одного selectbox в другой selectbox (с дублированием)

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

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

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

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

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. См. Следующие вопросы и ответы:

  • Как получить пространства имен в файлах XML с помощью Xpath