WriteCData XMLWriter и новая строка в PHP

1

Я пытаюсь добавить новую строку в узел CData с XMLWriter в PHP.

$xml = new XMLWriter(); 
$xml->openURI('php://output'); 
$xml->startDocument('1.0', 'UTF-8'); 
$xml->setIndent(true);

$str = "my string\nmy string";
$xml->startElement('test');
$xml->writeCData($str);
$xml->endElement();
$xml->endDocument();

Но вывод не возвращает никакой новой строки, поскольку я написал "\n"...

возвращает:

<test>my string    my string</test>

вместо:

<test>my string
my string
</test>

Я видел на других сообщениях, что некоторые пользователи используют "& # 10;" код или "& #xD;" (без пробела), но когда я помещаю его в свою переменную $ str, символы thoses экранируются, а XMLWriter записывает их как выходные данные и не создает новую строку.

Есть ли у вас какие-то идеи?

Большое спасибо !

  • 0
    Я получаю разрыв строки при запуске вашего скрипта через php-cli, т.е. вывод отправляется на консоль. И 3v4l.org/JksDe также показывает разрыв строки.
Теги:
cdata
xmlwriter

1 ответ

0
Лучший ответ

Я считаю, что нет простых способов форматирования вывода PHP XMLWriter, поскольку вывод предназначен для машиносчитываемых, а не для чтения человеком. Возможно, можно использовать XMLWriter :: writeRaw, чтобы добавить пользовательские разрывы строк.

  • 1
    Я попробовал это: $ xml-> startElement ('textValue') -> writeRaw ('<! [CDATA ['. Htmlspecialchars ($ str, ENT_XML1, 'UTF-8'). ']]>') -> endElement ( ); и это похоже на работу. Надеюсь, мой XML все еще действителен с новой строкой в CDATA!
  • 0
    Вы можете использовать такие сервисы, как xmlvalidation.com для проверки вашего XML.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню