¿Hay alguna forma de obtener la codificación xml en la función toString ()?
Ejemplo:
xml.Save("myfile.xml");
lleva a
<?xml version="1.0" encoding="utf-8"?>
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
Pero
tb_output.Text = xml.toString();
conduce a una salida como esta
<Cooperations>
<Cooperation>
<CooperationId>xxx</CooperationId>
<CooperationName>Allianz Konzern</CooperationName>
<LogicalCustomers>
...
c#
linq-to-xml
Henrik P. Hessel
fuente
fuente
XDocument.Save(TextWriter)
la aplicación y simplemente ignora la codificación de la declaración, en lugar deXDocument.Save(String)
oXDocument.Save(Stream)
implementaciones. Me pregunto por qué ...StringWriter
, a menos que use uno que anule laEncoding
propiedad. Tengo otra respuesta sobre eso. Pensé que estabas diciendo que estaba eliminando la "codificación" por completo ...La propiedad de declaración contendrá la declaración XML. Para obtener el contenido más la declaración, puede hacer lo siguiente:
fuente
tb_output.Text = @"<?xml version=""1.0"" encoding=""utf-8"" ?>" + xml;
... = $"{xdoc.Declaration}{Environment.NewLine}{xdoc}";
utilizar este:
fuente
Me gustó esto
Por favor vea a continuación lo que obtengo en distributorInfo
fuente
Similar a las otras respuestas +1, pero un poco más de detalle sobre la declaración y una concatenación un poco más precisa.
<xml />
La declaración debe estar en su propia línea en un XML formateado, así que me aseguro de que agreguemos la nueva línea. NOTA: usarloEnvironment.Newline
producirá la nueva línea específica de la plataformaAmbos resultados producen:
fuente
Algunas de estas respuestas resuelven la solicitud del cartel, pero parecen demasiado complicadas. Este es un método de extensión simple que evita la necesidad de un escritor separado, maneja una declaración faltante y es compatible con el parámetro estándar ToString SaveOptions.
Para usar la extensión, simplemente reemplácela
xml.ToString()
conxml.ToXmlString()
fuente
También puede usar un XmlWriter y llamar al
método.
fuente
fuente