Я на 80% уверен, что это ваша проблема:
PHP serialize()
не возвращает строки ASCII или UTF-8. Это двоичный формат, и вы не можете встроить его в текстовые форматы, такие как XML или JSON. Не делай этого.
Причина в том, что он использует такие вещи, как 0x00
, для обозначения определенных вещей, таких как частные и защищенные свойства.
Я предполагаю, что DOM видит не-ascii символ и "сдается". Вы не видите этого при выводе строки, потому что эти байты обычно не отображаются в браузерах или терминалах.
Использование PHP serialize()
формата в любом случае является плохой идеей ... но, похоже, вы используете его в качестве механизма кэширования в файловой системе, зачем вам встраивать его в XML? Просто сохраните сериализованную строку отдельно. Это быстрее, потому что вам не нужен анализатор XML.