Pregunta

Estoy generando XML a través de XMLTextWriter.

El archivo se ve bien a mis ojos, valida (en WC3), y fue aceptado por el cliente.

Pero un proveedor de clientes se queja de que las extremidades de línea son CRLF, en lugar de solo CR.

Bueno, estoy en una máquina Win32 usando C#, y CRLF es el final de línea estándar Win32. ¿Hay alguna forma de cambiar las extremidades de línea en XMLTextWriter?

Además, ¿no deberían los finales de línea no importar a un analizador XML adecuado?

ver también: ¿Qué son el retorno del carro, la alimentación de línea y la alimentación de forma?

NOTA: Parece que la única respuesta es una solución lateral: debe usar el XMLWriter en lugar del XMLTextWriter

¿Fue útil?

Solución

Por supuesto, momentos después de preguntar, encuentro una pista sobre MSDN (que no pude encontrar a través de Google) que se refiere a XMLWriterSettings.newlinechars

lo que luego me llevó a la respuesta inaceptada en Entonces: escribir xmlDocument para archivar con carácter específico de newline (C#)

Todo está en la terminología .....

Otros consejos

Use el XMLWriterSettings para establecer lo que quiera como su Char de Fin of Line.

XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.NewLineChars = "\r";

XmlWriter writer = XmlWriter.Create(
                         new StreamWriter(@"c:\temp\hello.xml", mySettings);

No sé dónde importarían los personajes de fin de línea. No me he encontrado con eso antes.

Qué finalización de línea se usa no debe importar para un analizador implementado correctamente (ver la especificación), Cito (énfasis mío):

Para simplificar las tareas de las aplicaciones, el procesador XML debe comportarse como si normalizara todas las salidas de línea En entidades analizadas externas (incluida la entidad del documento) en la entrada, antes de analizar, traduciendo la secuencia de dos caracteres #XD #XA y cualquier #XD que no sea seguido por #XA a un solo carácter #XA.

Por lo tanto, debería estar bien con la forma en que lo tiene en este momento. Es posible que desee preguntar qué está haciendo realmente el proveedor del cliente allí, lo más probable es que lo estén haciendo mal.

Use la propiedad XMLWriterSettings.newlineChars.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top