net.sf.json.xml.XMLSerializer und eckige Klammern

Es gibt einen extrem hartnäckigen Bug in net.sf.json.xml.XMLSerializer: Ein XML-Knoten

wird nicht zum String

sondern zum leeren Array

Jetzt könnte man vermuten, dass CDATA hilft, oder HTML-Sonderzeichen, oder Escapen, oder oder oder. Alles falsch. Der Serializer ist so “klug”, dass er alles trimt optimiert und ersetzt, bis er wieder den ursprünglichen String findet, und der Bug zuschlägt. Das meine ich mit “hartnäckig 🙂

Einzige Lösung, die mir eingefallen ist (Verbesserungen werden gerne gesehen!):

PS: Das ist deshalb geringfügig weniger dirty, als es aussieht, weil spitze Klammern Teil des Suchstrings sind. Spitze nicht-escapte Klammern dürfen in (validen) XMLs nur Teil der Struktur sein, deshalb werden hier tatsächlich nur Knoteninhalte, die ausschließlich “[]” lauten, ersetzt.

PPS: Ein ähnliches Problem gibt es mit

aus dem ein Object wird. Ich ersetze es deshalb einfach analog, siehe oben.