Die Frage ist, was sind ungültige Zeichen?
In einem Element (Attribut oder Knoten) darf z.B. natürlich kein "<" vorkommen, da damit wieder XML eingeleitet wird.
Hierfür benötigst du eine SQL-Funktion, die dir die Zeichen übersetzt.
Aus "<" wird dann z.B. "<", aus dem "&" dann "&" usw.
Nicht druckbare Zeichen (Hexwerte) müssen dann in Pseudo-Unicode (ich glaube "#nnnn;" o.ä.) übersetzt werden.
Umgedreht, beim Einlesen benötigst du dann eine Rückübersetzung.
Leider gibt es dafür tatsächlich keine Standard-SQL-Funktion, dafür musst du dir eine schreiben (lassen).