.NET XmlTextWriter
crea file xml non validi.XmlTextWriter scrive caratteri di controllo in modo errato
In XML, sono consentiti alcuni caratteri di controllo, come "scheda orizzontale" (	
), ma altri no, come "scheda verticale" (
). (Vedere spec.)
Ho una stringa che contiene un carattere di controllo UTF-8 che non è consentito in XML.
Anche se XmlTextWriter
scappa il carattere, l'XML risultante è naturalmente non valido.
Come posso essere sicuro che XmlTextWriter
non produca mai un file XML illegale?
Oppure, se non è possibile farlo con XmlTextWriter
, come è possibile rimuovere i caratteri di controllo specifici non consentiti in XML da una stringa?
codice Esempio:
using (XmlTextWriter writer =
new XmlTextWriter("test.xml", Encoding.UTF8))
{
writer.WriteStartDocument();
writer.WriteStartElement("Test");
writer.WriteValue("hello \xb world");
writer.WriteEndElement();
writer.WriteEndDocument();
}
uscita:
<?xml version="1.0" encoding="utf-8"?><Test>hello  world</Test>
Non è possibile avere una scheda verticale con escape in XML? Potresti fare riferimento allo standard? – Jodrell
@Jodrell Proprio così, non puoi. XML è per testo, non per caratteri di controllo o dati binari. http://www.w3.org/TR/REC-xml/#charsets – jasso