Немного другой подход, который был полезен в некоторых ситуациях -
Заполнители и поиск и замена.
Перед синтаксическим анализом вы можете просто использовать свой собственный маркер / заполнитель переноса строки, затем во 2-й половине ситуации просто замените строку на любой эффективный символ перевода строки, будь то \ n или
или же
или # & 10; или \ u2028 или любой из различных символов разрыва строки там. Найдите и замените их обратно после первоначальной установки собственного заполнителя в данных.
Это полезно, когда парсеры, такие как jQuery $ .parseXML (), удаляют незашифрованные разрывы строк. Например, вы могли бы использовать {LBREAK} в качестве символа разрыва строки, вставить его во время необработанного текста и заменить его позже после анализа в объекте XML. String.replaceAll () - полезный прототип.
Итак, грубая концепция кода с jquery и прототипом replaceAll (этот код не тестировался, но он покажет концепцию):
function onXMLHandleLineBreaks(_result){
var lineBreakCharacterThatGetsLost = ' ';
var lineBreakCharacterThatGetsLost = '
';
var rawXMLText = _result; // hold as text only until line breaks are ready
rawXMLText = String(rawXMLText).replaceAll(lineBreakCharacterThatGetsLost, '{mylinebreakmarker}'); // placemark the linebreaks with a regex find and replace proto
var xmlObj = $.parseXML(rawXML); // to xml obj
$(xmlObj).html( String(xmlObj.html()).replaceAll('{mylinebreakmarker}'), lineBreakCharacterThatWorks ); // add back in line breaks
console.log('xml with linebreaks that work: ' + xmlObj);
}
И, конечно, вы можете настроить символы разрыва строки, которые работают или не работают, в вашей ситуации с данными, и вы можете поместить это в цикл для набора символов разрыва строки, которые не работают, и выполнить итерацию по ним, чтобы сделать целый набор символов разрыва строки.