¿Cómo guardar nuevas líneas en el atributo XML?

Necesito guardar contenido que contenga líneas nuevas en algunos atributos XML, no texto. El método debe seleccionarse para poder decodificarlo en XSLT 1.0 / ESXLT / XSLT 2.0

¿Cuál es el mejor método de encoding?

Por favor sugiera / dé algunas ideas.

En una DOM API compatible no hay nada que deba hacer. Simplemente guarde los caracteres reales de nueva línea en el atributo, la API los codificará correctamente por sí solo (consulte la especificación XML canónica, sección 5.2 ).

Si usted hace su propia encoding (es decir, reemplaza \n con antes de guardar el valor del atributo), la API codificará su entrada nuevamente , lo que resulta en 
 en el archivo XML.

En pocas palabras, el valor de la cadena se guarda textualmente. Sacas lo que pones, no hay necesidad de interferir.

Sin embargo … algunas implementaciones no son compatibles. Por ejemplo, codificarán & caracteres en los valores de los atributos, pero se olvidarán de los caracteres o las tabs de la nueva línea. Esto lo coloca en una posición de pérdida ya que no puede simplemente reemplazar las nuevas líneas con antemano.

Estas implementaciones guardarán caracteres nuevos sin codificar, como este:

  

Al analizar dicho documento, las nuevas líneas literales en los atributos se normalizan en un solo espacio (de nuevo, de acuerdo con la especificación) y, por lo tanto, se pierden.

En estas implementaciones es imposible guardar (y retener!) Nuevas líneas en los atributos.

Puede usar la entidad para representar una nueva línea en un atributo XML. se puede usar para representar un retorno de carro. Un CRLF de estilo de Windows podría representarse como .

Esta es la syntax XML legal. Ver especificaciones XML para más detalles.

Una respuesta cruda puede ser:

 XmlDocument xDoc = new XmlDocument(); xDoc.Load(@"Agenda.xml"); //make stuff with the xml //make attributes value = "\r\n" (you need both expressions to make a new line) string a = xDoc.InnerXml.Replace("
", "\r").Replace("
", "\n").Replace(">< ",">\r \n< "); StreamWriter sDoc = new StreamWriter(@"Agenda.xml"); sDoc.Write(a); sDoc.Flush(); sDoc.Dispose(); 

Esto como verá es solo una cadena