Estoy usando XmlWriter.Create()
para obtener una instancia de escritor y luego escribir el XML, pero el resultado es <?xml version="1.0" encoding="utf-16" ?>
, ¿cómo le digo a mi escritor xml que no lo produzca?cómo crear un xml usando xml writer sin elemento de declaración
Respuesta
Use XmlWriterSettings.OmitXmlDeclaration
.
No olvides establecer XmlWriterSettings.ConformanceLevel
en ConformanceLevel.Fragment
.
Usted puede subclase XmlTextWriter
y reemplazar el método WriteStartDocument()
no hacer nada:
public class XmlFragmentWriter : XmlTextWriter
{
// Add whichever constructor(s) you need, e.g.:
public XmlFragmentWriter(Stream stream, Encoding encoding) : base(stream, encoding)
{
}
public override void WriteStartDocument()
{
// Do nothing (omit the declaration)
}
}
Uso:
var stream = new MemoryStream();
var writer = new XmlFragmentWriter(stream, Encoding.UTF8);
// Use the writer ...
Referencia: Esta blog post de Scott Hanselman.
gracias, ¿alguna forma mejor? No quiero hacer una subclase solo para eliminar la declaración. – ninithepug
@ninithepug: No tan lejos como sé, lo siento. Sin embargo, puedes envolverlo en un método estático en algún lado si lo usas a menudo. Eso debería ayudar a mantenerlo limpio – Cameron
gracias, agradezco – ninithepug
puede utilizar con XmlWriter.Create()
:
new XmlWriterSettings { OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment }
public static string FormatXml(string xml)
{
if (string.IsNullOrEmpty(xml))
return string.Empty;
try
{
XmlDocument document = new XmlDocument();
document.LoadXml(xml);
using (MemoryStream memoryStream = new MemoryStream())
using (XmlWriter writer = XmlWriter.Create(memoryStream, new XmlWriterSettings { Encoding = Encoding.Unicode, OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment, Indent = true, NewLineOnAttributes = false }))
{
document.WriteContentTo(writer);
writer.Flush();
memoryStream.Flush();
memoryStream.Position = 0;
using (StreamReader streamReader = new StreamReader(memoryStream))
{
return streamReader.ReadToEnd();
}
}
}
catch (XmlException ex)
{
return "Unformatted Xml version." + Environment.NewLine + ex.Message;
}
catch (Exception ex)
{
return "Unformatted Xml version." + Environment.NewLine + ex.Message;
}
}
- 1. iOS XML writer class
- 2. lxml ¿Crear fragmento XML sin elemento raíz?
- 3. XML writer y Memory Stream C#
- 4. Extraer un elemento XML desde un archivo XML usando XPath
- 5. C# XML - declaración de espacio múltiple con el escritor XML
- 6. quitar declaración XML del documento XML generado usando java
- 7. NET serialización XML sin declaración <?xml> texto
- 8. Etiqueta de declaración XML usando SimpleXML
- 9. Deserialize elemento XML vacío usando xstream
- 10. Cómo crear un atributo XML (en lugar de un elemento) usando FSharp?
- 11. ¿Cómo crear un menú contextual usando un archivo XML?
- 12. ¿Cómo inserto un elemento en XML usando Linq?
- 13. Cómo POSTAR un elemento xml en python
- 14. XML nombre del elemento usando T-SQL
- 15. ¿Cómo crear treeview desde un archivo XML usando WPF?
- 16. Salida de XML sin formato usando php
- 17. ¿Cómo crear un documento XML utilizando XmlDocument?
- 18. Leyendo el texto interno de un elemento XML usando Go
- 19. PHP - Eliminar elemento XML
- 20. Codificación en declaración XML python
- 21. ¿Cómo eliminar un elemento xml del archivo?
- 22. web.config transform elemento xml
- 23. Serializar en un fragmento XML - no Documento XML
- 24. ¿Cómo puedo crear XML desde Perl?
- 25. Cómo XML serializar variedad polimórfica sin envolver elemento
- 26. ¿Cómo crear XML a partir de XML utilizando XSL?
- 27. ¿Cómo crear un archivo XML con MSBuild?
- 28. cómo crear un archivo xml en android
- 29. cómo crear un archivo xml en delphi
- 30. android - ¿Cómo crear la identificación de xml?
A partir de los documentos con los que enlace: 'La declaración XML se escribe siempre si ConformanceLevel se establece en el Documento, incluso si OmitXmlDeclaration se establece en TRUE – Cameron
@Cameron, True y? –
¿No estará configurado para Documentar la mayor parte del tiempo? – Cameron