Если вы хотите быстро исправить это (я делаю, когда чувствую себя ленивым):
// 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: в </xhtml_.
Вид взломанный и может выйти из строя, если задействованы блоки контейнеров CDATA NameSpaced или имена тегов UNICODE, но я бы сказал, что вы, как правило, безопасны в использовании (пока еще не удалось).
Ответ 3
Colon обозначает пространство имен XML. DOM имеет хорошую поддержку пространств имен.
Ответ 4
Я не думаю, что это хорошая идея, чтобы избавиться от толстой кишки или заменить ее чем-то другим, как это предлагали некоторые люди. Вы можете легко получить доступ к элементам, которые имеют префикс пространства имен. Вы можете либо передать URL-адрес, который идентифицирует пространство имен, как аргумент метода children(), либо передать префикс пространства имен и "true" методу children(). Второй подход требует PHP 5.2 и выше.