2016-01-05 4 views
1

Я пытаюсь добавить новую строку в узел CData с XMLWriter в PHP.WriteCData 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(); 

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

возвращается:

<test>my string my string</test> 

вместо:

<test>my string 
my string 
</test> 

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

У вас есть идеи?

спасибо!

+0

Я получаю строку при запуске скрипта через php-cli, т. Е. Вывод отправляется на консоль. И https://3v4l.org/JksDe также показывает строку. – VolkerK

ответ

0

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

+0

Я пробовал это: $ xml-> startElement ('textValue') -> writeRaw ('') -> EndElement(); и похоже работа. Надеюсь, мой XML все еще действует с новой строкой на CDATA! – Nicolas

+0

Вы можете использовать такие сервисы, как http://www.xmlvalidation.com, чтобы проверить свой XML. – jonjbar

Смежные вопросы