Pregunta

estoy poblando el XElement con información y escribirla en un archivo XML usando el método XElement.Save(path). En algún momento, ciertos caracteres en el archivo resultante se escaparon - por ejemplo, se convierte en > >.

Este comportamiento es inaceptable, ya que necesito para almacenar la información en el archivo XML que incluye el carácter > como parte de una contraseña. ¿Cómo puedo escribir el contenido 'en bruto' de mi XElement objeto a XML sin tener éstos escaparon?

¿Fue útil?

Solución

La especificación XML por lo general permite > que aparezca sin escapar. XDocument juega a lo seguro y se escapa aunque aparece en lugares donde no es estrictamente necesario el escape.

Se puede hacer un reemplazo en el XML generado. Tenga en cuenta por http://www.w3.org/TR/REC-xml#syntax , si esto resulta en cualquier secuencia ]]>, el XML no cumplir con la especificación XML. Por otra parte, XDocument.Parse realidad rechazará tales XML con el error " ']]>' no está permitido en datos de caracteres.".

XDocument doc = XDocument.Parse("<test>Test&gt;Data</test>");
// Don't use this if it could result in any ]]> sequences!
string s = doc.ToString().Replace("&gt;", ">");
System.IO.File.WriteAllText(@"c:\path\test.xml", s);

En consideración de que cualquier analizador XML especificación compatible debe ser compatible con &gt;, lo recomiendo mucho fijar el código que está procesando la salida XML de su programa.

Otros consejos

La falta de este comportamiento es inaceptable.

Un autónomo sin escapar > es no válido XML .
XElement está diseñado para producir XML válido.

Si desea obtener el formato de escape contenido del elemento, utilice la propiedad Value.

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