2016-03-26 2 views
0

Я ищу решение для замены символов новой строки, найденных внутри атрибутов XML (строка XML) в Javascript. (Попытка заменить 
 так я не теряю новую строку при разборе XML обратно)Совпадение символов новой строки внутри кавычек

Примечание: Есть и другие символы новой строки в строке, например, после того, как <main> .. </body>

(Открыть в любое другое регулярном выражении/не регулярное выражение решения!)

<main> 
<head/><body><note text="Load"> 
<note text="2 Newlines at the end of this  

newline"/> 
</body> 
</main> 

Все у меня есть, это ужасная вещь "[\s\S]*?([\r\n]+)[\s\S]*?"

https://regex101.com/r/vE2lD7/2

+0

'str.replace (/ \ п/г, " ");' – DBS

+0

Диапазон возможных решений здесь: http://stackoverflow.com/questions/ 784539/how-do-i-replace-all-line-breaks-in-a-string-with-br-tags – DBS

+0

@DBS Спасибо, это не сработает, поскольку в строке есть другие строки новой строки (вне кавычек) (добавлена ​​подробная информация к вопросу) – JNX

ответ

0

Вот небольшой фрагмент кода делает преобразование:

function convert(xmlStr) { 
 
    var xml = document.createElement('xml'); 
 
    xml.innerHTML = xmlStr; 
 

 
    [].forEach.call(xml.querySelectorAll('note[text]'), function (note) { 
 
     note.setAttribute('text', 
 
      note.getAttribute('text').replace(/\r?\n/g,'@#10')); 
 
    }); 
 

 
    return xml.innerHTML.replace(/@#10/g, '&#10'); 
 
} 
 

 
// I/O 
 
var button = document.querySelector('button'); 
 
var input = document.querySelector('textarea'); 
 
var output = document.querySelector('pre'); 
 

 
// click handler 
 
button.onclick = function() { 
 
    output.textContent = convert(input.value); 
 
}
textarea { width: 25em; height: 10em; float:left}
<textarea><main> 
 
<head/><body><note text="Load"> 
 
<note text="2 Newlines at the end of this  
 

 
newline"/> 
 
</body> 
 
</main></textarea> 
 
<button>convert</button> 
 
<pre></pre>

Обратите внимание, что замена с &#10 немедленно приведет & быть экранированы, как &amp;.

+0

Отлично, спасибо. +1 для & исправить. – JNX

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