Записать документ dom4j в xml-файл с экранированным символом '\ r \ n \' - PullRequest
0 голосов
/ 12 февраля 2010

Извините, что спросил о той же проблеме, но теперь я хотел бы:

написать документ dom4j, который содержит теги, похожие на:

<Field>\r\n some text</Field>

в XML-файл, но \r\n должен быть экранирован до &#13;&#10;

org.dom4j.Document.asXml()

не работает.

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Предполагая, что вы имеете в виду последовательность CRLF в текстовом узле (а не просто литеральную обратную косую черту-r-обратную косую черту-n), вы не сможете убедить сериализатор XML записать их как &#13;&#10;, поскольку XML говорит, что тебе не нужно. Документ абсолютно эквивалентен в терминах XML, независимо от того, избежите ли вы его или нет. Единственное место, где вам нужно экранировать последовательность CRLF, как &#13;&#10;, - это значение атрибута.

Если вам действительно нужно создать этот вывод, вам придется написать собственный XML-сериализатор, который следует специальным правилам для экранирования управляющих кодов. Но если вы делаете это, потому что внешний инструмент не может прочитать XML-элемент с последовательностями CRLF, вам следует сосредоточиться на исправлении этого инструмента, потому что, если он не может справиться с символами новой строки в текстовом содержимом, он не работает и не является правильным XML-анализатором. .

0 голосов
/ 12 февраля 2010

Обход дерева, применяя String.replace к узлам текста.

...