.NET XmlTextWriter
crea archivos xml no válidos.XmlTextWriter escribir caracteres de control incorrectamente
En XML, algunos caracteres de control están permitidos, como 'pestaña horizontal' (	
), pero otros no, como 'pestaña vertical' (
). (Consulte spec.)
Tengo una cadena que contiene un carácter de control UTF-8 que no está permitido en XML.
Aunque XmlTextWriter
escapa del caracter, el XML resultante aún no es válido.
¿Cómo puedo asegurarme de que XmlTextWriter
nunca produzca un archivo XML ilegal?
O, si no es posible hacerlo con XmlTextWriter
, ¿cómo puedo quitar los caracteres de control específicos que no están permitidos en XML de una cadena?
código Ejemplo:
using (XmlTextWriter writer =
new XmlTextWriter("test.xml", Encoding.UTF8))
{
writer.WriteStartDocument();
writer.WriteStartElement("Test");
writer.WriteValue("hello \xb world");
writer.WriteEndElement();
writer.WriteEndDocument();
}
Salida:
<?xml version="1.0" encoding="utf-8"?><Test>hello  world</Test>
No se puede tener una pestaña vertical escapada en XML? ¿Podría hacer referencia al estándar? – Jodrell
@Jodrell Así es, no puedes. XML es para texto, no para caracteres de control o datos binarios. http://www.w3.org/TR/REC-xml/#charsets – jasso