46 lines
978 B
JavaScript
46 lines
978 B
JavaScript
var encodeXml = function(str, buffer) {
|
|
str = String(str);
|
|
|
|
if (str === null || !str.length) return str;
|
|
if (!buffer) buffer = [];
|
|
|
|
for (var i = 0, len = str.length; i < len; i += 1) {
|
|
var char = str.charAt(i);
|
|
|
|
switch (char) {
|
|
case '<':
|
|
buffer.push('<');
|
|
break;
|
|
|
|
case '>':
|
|
buffer.push('>');
|
|
break;
|
|
|
|
case '&':
|
|
buffer.push('&');
|
|
break;
|
|
|
|
case '"':
|
|
buffer.push('"');
|
|
break;
|
|
|
|
case '\'':
|
|
buffer.push(''');
|
|
break;
|
|
|
|
default:
|
|
var charCode = str.charCodeAt(i);
|
|
if (charCode < 0x20) {
|
|
// sort out invalid XML characters below 0x20 - all but 0x9, 0xA and 0xD.
|
|
// The trick is an adaption of java.lang.Character.isSpace().
|
|
if (((((1 << 0x9) | (1 << 0xA) | (1 << 0xD)) >> charCode) & 1) !== 0) {
|
|
buffer.push(char);
|
|
}
|
|
} else {
|
|
buffer.push(char);
|
|
}
|
|
}
|
|
}
|
|
|
|
return buffer.join('');
|
|
}
|