Я думаю, что данный jdk1.5 (или больше) и Ваша конкатенация ориентировано на многопотоковое исполнение, необходимо использовать StringBuilder вместо StringBuffer http://java4ever.blogspot.com/2007/03/string-vs-stringbuffer-vs-stringbuilder.html Что касается усилений в скорости: http://www.about280.com/stringtest.html
Лично, который я кодировал бы для удобочитаемости, поэтому если Вы не находите, что конкатенация строк делает Ваш код значительно медленнее, останьтесь с тем, какой бы ни метод делает Ваш код более читаемым.
Вы можете создать временный родительский узел и получить его внутреннее HTML-содержимое:
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
var tmp = document.createElement("div");
tmp.appendChild(el);
console.log(tmp.innerHTML); // <p>Test</p>
РЕДАКТИРОВАТЬ: См. Ответ ниже о externalHTML. el.outerHTML должен быть всем, что нужно.
Under FF you can use the XMLSerializer
object to serialize XML into a string. IE gives you an xml
property of a node. So you can do the following:
function xml2string(node) {
if (typeof(XMLSerializer) !== 'undefined') {
var serializer = new XMLSerializer();
return serializer.serializeToString(node);
} else if (node.xml) {
return node.xml;
}
}