Intereting Posts
Правильный способ обновления двунаправленного отношения Many to Many symfony2-doctrine Перенос хэш из php's crypt () в python php-скрипты получают значение узла, если оно равно заданному значению; изменение значения узла имеет один и тот же родительский узел Удалить строку из файла CSV Использование переменных сеанса ColdFusion в PHP Любой способ получить все строки таблицы, где внешний ключ совпадает с первичным ключом, используя только модели, а не напрямую обращаться к базе данных? CakePHP: вызов функции-члена setFlash () для объекта без объекта Переопределение стратегии генерации идентификатора по умолчанию не влияет на ассоциации Закрывает ли PHP файл после того, как обработчик файлов собран из мусора? Многопоточный оператор for для php Какие маркеры можно параметризовать в подготовленных отчетах PDO? CodeIgniter, HMVC и где размещать общие библиотеки? Динамически генерирует слово облако? PHP / SQL – Преобразование EBCDIC в ASCII Компиляция моего собственного расширения PHP в Windows с помощью Visual Studio 2008

Библиотека PHP для синтаксического анализа XML с двоеточиями в именах тегов?

Я пытаюсь использовать SimpleXML , но похоже, что XML выглядит не так:

<xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div> 

Итак, какая библиотека будет обрабатывать теги, которые выглядят так (в них есть двоеточие)?

Solutions Collecting From Web of "Библиотека PHP для синтаксического анализа XML с двоеточиями в именах тегов?"

Скажем, у вас есть такой xml.

 <xhtml:div> <xhtml:em>italic</xhtml:em> <date>2010-02-01 06:00</date> </xhtml:div> 

Вы можете получить доступ к ним следующим образом: $xml->children('xhtml', true)->div->em;

однако , если вы хотите поле даты, это: $xml->children('xhtml', true)->div->date; не работает , потому что вы застряли в пространстве имен xhtml.

вы должны снова выполнить «дети», чтобы вернуться к пространству имен по умолчанию:

 $xml->children('xhtml', true)->div->children()->date; 

Если вы хотите исправить это быстро, сделайте это (я делаю, когда чувствую себя ленивым) :

 // Will replace : in tags and attributes names with _ allowing easy access $xml = preg_replace('~(</?|\s)([a-z0-9_]+):~is', '$1$2_', $xml); 

Это преобразует <xhtml: в <xhtml_ и </xhtml: to </xhtml_ . Вид взломанный и может выйти из строя, если задействованы блоки контейнеров CDATA NameSpaced или имена тегов UNICODE, но я бы сказал, что вы, как правило, безопасны в использовании (еще не подвели меня) .

Colon обозначает пространство имен XML. DOM имеет хорошую поддержку пространств имен.

Я не думаю, что это хорошая идея, чтобы избавиться от толстой кишки или заменить ее чем-то другим, как это предлагали некоторые люди. Вы можете легко получить доступ к элементам, которые имеют префикс пространства имен. Вы можете либо передать URL-адрес, который идентифицирует пространство имен, как аргумент метода children (), либо передать префикс пространства имен и «true» методу children (). Второй подход требует PHP 5.2 и выше.

SimpleXmlElement :: дети