¿Cómo puedo eliminar la lista de materiales de XmlTextWriter con C #?
-
20-09-2019 - |
Pregunta
¿Cómo eliminar la lista de materiales de un archivo XML que se está creando?
He intentado usar el nuevo método (falso) UTF8Encoding, pero no funciona. Aquí está el código que tengo:
XmlDocument xmlDoc = new XmlDocument();
XmlTextWriter xmlWriter = new XmlTextWriter(filename, new UTF8Encoding(false));
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
xmlWriter.WriteStartElement("items");
xmlWriter.Close();
xmlDoc.Load(filename);
XmlNode root = xmlDoc.DocumentElement;
XmlElement item = xmlDoc.CreateElement("item");
root.AppendChild(item);
XmlElement itemCategory = xmlDoc.CreateElement("category");
XmlText itemCategoryText = xmlDoc.CreateTextNode("test");
item.AppendChild(itemCategory);
itemCategory.AppendChild(itemCategoryText);
xmlDoc.Save(filename);
Solución
Usted está guardando el archivo dos veces - una vez con XmlTextWriter
y una vez con xmlDoc.Save
. El ahorro de la XmlTextWriter
no es añadir una lista de materiales -. Ahorro con xmlDoc.Save
está
Sólo tiene que guardar a una TextWriter
lugar, por lo que se puede especificar la codificación de los caracteres:
using (TextWriter writer = new StreamWriter(filename, false,
new UTF8Encoding(false))
{
xmlDoc.Save(writer);
}
Otros consejos
Me gustaría escribir el código XML de una cadena (constructor) en lugar y luego escribir esa cadena en el archivo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow