¿Hay alguna manera de generar los contenidos de un XDocument sin la lista de materiales? Al leer la salida con Flash, causa errores.Problema con XDocument y la lista de materiales (marca de orden de bytes)
Respuesta
Si está escribiendo el XML con un XmlWriter, puede configurar la codificación en una que se haya inicializado para omitir la lista de materiales.
EG: el constructor de System.Text.UTF8Encoding toma un valor lógico para especificar si desea que la lista de materiales, por lo que:
XmlWriter writer = XmlWriter.Create("foo.xml");
writer.Settings.Encoding = new System.Text.UTF8Encoding(false);
myXDocument.WriteTo(writer);
crearía un XmlWriter con codificación UTF-8 y sin el orden de bytes Marcos.
writer.Settings.Encoding is read only –
¿Estás seguro? No obtengo un error de compilación, y la documentación dice que no es de solo lectura: http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.encoding.aspx –
cómo obtengo de aquí a una cadena? –
Probablemente podría usar System.Text.Encoding.Convert() en la salida; Solo como algo para probar, no como algo que haya probado.
Conviértalo en una cadena, luego quite la marca usted mismo.
Tipo de una combinación de publicaciones, tal vez algo como esto:
MemoryStream ms = new MemoryStream();
StreamWriter writer = new StreamWriter(ms, new UTF8Encoding(false));
xmlDocument.Save(writer);
Como se ha indicado, este problema tiene un mal olor.
De acuerdo con this support note, Flash usa la lista de materiales para desambiguar entre UTF-16BE y UTF-16LE, que es como debería ser. Por lo tanto, no debería recibir un error de Flash: XDocument produce XML bien formado con codificación UTF16, y Macromedia afirma que Flash puede leer XML bien formado con codificación UTF16.
Esto me hace sospechar que sea cual sea el problema que encuentre, probablemente no esté causado por la lista de materiales. Si fuera yo, buscaría más, con la expectativa de que el problema real sea otro.
No pude agregar un comentario arriba, pero si alguien usa la sugerencia de Chris Wenham, ¡recuerde deshacerse del escritor! Pasé un tiempo preguntándome por qué mi producción se truncó, y esa fue la razón.
sugieren un cambio using(XmlWriter...) {...}
a la sugerencia de Chris
mod Leve a la respuesta de Chris Wenham.
No se puede modificar la codificación de una vez creada la XmlWriter, pero se puede establecer utilizando los XmlWriterSettings al crear el XmlWriter
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new System.Text.UTF8Encoding(false);
XmlWriter writer = XmlWriter.Create("foo.xml", settings);
myXDocument.WriteTo(writer);
- 1. Eliminar marca de orden de bytes de File.ReadAllBytes (byte [])
- 2. Eliminación de marcas de orden de bytes (BOM) mediante Emacs
- 3. ¿Por qué veo una marca de orden de bytes en mi servicio web .NET de repente?
- 4. ¿Cómo codifico/decodifico las matrices de bytes UTF-16LE con una lista de materiales?
- 5. Ignorar marcas de orden de bytes en C++, la lectura de una corriente
- 6. Cambia el orden de XML usando XDocument
- 7. Rails created_at orden de la marca de tiempo no concuerda con la orden de identificación
- 8. UTF-8 Sin lista de materiales?
- 9. Listado de materiales a la lista <t>?
- 10. Marcas de orden de bytes StreamWriter y UTF-8
- 11. Conversión de orden de bytes de red con "char"
- 12. Error de validación: Marca de orden por bytes encontrada en el archivo UTF-8
- 13. Ordenar la lista por orden de índices
- 14. XDocument: guardando XML en un archivo sin BOM
- 15. Python: ordenación de lista con múltiples atributos y orden mixto
- 16. UTF-8 HTML y archivos CSS con BOM (y cómo eliminar la lista de materiales con Python)
- 17. Materiales de aprendizaje de UniVerse
- 18. Guid de orden de bytes en .NET
- 19. usando los materiales con factory_girl
- 20. Cómo corregir la advertencia de validación de "Marca de orden por bytes en el archivo UTF-8"
- 21. PixelFormat.Format32bppArgb parece tener orden de bytes mal
- 22. Compilación (javac) de un código fuente Java codificado en UTF8 con una lista de materiales
- 23. Método IPAddress.GetAddressBytes() - ¿qué orden de bytes?
- 24. Materiales para SICP con python?
- 25. Rellenar XDocument de la Cadena
- 26. MySQL - Guardar orden de la lista con una sola actualización
- 27. problema: FFMPEG buscando con av_seek_frame utilizando posiciones de bytes
- 28. SQL - ordenado por orden de la lista
- 29. Problema con la herencia y Lista <>
- 30. Materiales instructivos antiguos de Delphi
posible duplicado de [XDocument: ahorro de XML para presentar sin BOM] (http : //stackoverflow.com/questions/4942825/xdocument-saving-xml-to-file-without-bom) –