Удаление недопустимых символов из XML перед сериализацией с помощью XMLSerializer ()

я пытаюсь сохранить пользовательский ввод в XML-документе на стороне клиента (javascript) и передать его на сервер для сохранения.

Например, один пользователь вставил текст, содержащий символ STX (0x2). XMLSerializer не экранировал символ STX и поэтому не сериализовался в правильно сформированный XML. Или, возможно, вызов .attr () должен был экранировать символ STX, но в любом случае был создан недопустимый XML.

найти вывод в браузере XMLSerializer () isn 'т всегда хорошо сформирован, (и недаже не удовлетворяет браузерсобственный DOMParser ()

В этом примере показано, что символ STX неправильно закодирован XMLSerializer ():

> doc = $.parseXML('\n');
    #document
> $(doc).find("elem").attr("someattr", String.fromCharCode(0x2));
    [ ​​ ]
> serializedDoc = new XMLSerializer().serializeToString(doc);
    ""
> $.parseXML(serializedDoc);
    Error: Invalid XML: 

Как мне создать XML-документ в браузере (с параметрами, определяемыми произвольным пользовательским вводом), чтобы он всегда был правильно сформирован (все правильно экранировано)? Я неНужно поддерживать IE8 или IE7.

(И да, я проверяю XML на стороне сервера, но если браузер передает серверу документ, который не является правильно сформированным, лучшее, что сервер может сделать, это отклонить его, чтоэто полезно для бедного пользователя)

Ответы на вопрос(1)

Ваш ответ на вопрос