2009-02-26 9 views
19

que tienen una cadena y su valor es:¿Cómo escribo una cadena XML en un archivo?

<ROOT> 
    qwerty 
    <SampleElement>adsf</SampleElement> 
    <SampleElement2>The text of the sample element2</SampleElement2> 
</ROOT> 

¿Cómo puedo escribir esta cadena en un archivo usando C# 3.0?

Gracias de antemano.

+1

El título es muy engañoso. Realmente debería decir algo sobre la E/S de archivos en C# – Akrikos

+0

Andrew ¿por qué la reversión? –

+0

Creo que deberíamos tratar de respetar la publicación original tanto como sea posible, incluido el asunto "Hola a todos", ya que eso fue lo que escribió el OP. Nada personal :) –

Respuesta

0

Tendrás que usar CDATA section. Más específicamente, cree un XmlCDataSection usando XmlDocument.CreateCDataSection y proporcione su cadena como parámetro.

45

Prueba esto:

string s = "<xml><foo></foo></xml>"; 
XmlDocument xdoc = new XmlDocument(); 
xdoc.LoadXml(s); 
xdoc.Save("myfilename.xml"); 

tiene la ventaja añadida de que la carga fallará si el código XML no es válido.

+2

+1 También le libera de preocuparse por la codificación, etc. – bernhof

17
File.WriteAllText("myFile.xml",myString); 
+0

+1 Para ahorrar sobrecarga al convertir el archivo a un XDocument solo para obtener una llamada IO conveniente. Para serialización o Xml no espaciado, este enfoque es más eficiente. – Jason

-3

Sé que usted dijo C# pero ha intentado VB.NET para XML Literals. Cosas increíbles

Public Class Program 
    Public Shared Sub Main() 
     Dim myKeyBoardStyle = "dvorak" 

     Dim myXML As XElement = <ROOT> 
           qwerty 
           <altKeyboard><%= myKeyBoardStyle.ToUpper() %></altKeyboard> 
            <SampleElement>adsf</SampleElement> 
            <SampleElement2>The text of the sample element2</SampleElement2> 
           </ROOT> 

     Console.WriteLine(myXML.ToString()) 

     myXML.Save(".\fileFromXElement.xml") 
    End Sub 
End Class 

Aviso el elemento ordenado que inyecta el resultado de código en en la salida:

<?xml version="1.0" encoding="utf-8"?> 
<ROOT> 
           qwerty 
           <altKeyboard>DVORAK</altKeyboard><SampleElement>adsf</SampleElement><SampleElement2>The text of the sample element2</SampleElement2></ROOT> 

recorte [opiniones retirados]

+5

Este no es un caso de la herramienta adecuada para el trabajo. Tu publicación es un ejemplo de las limitaciones de solo conocer una herramienta e intentar forzarlo todo. Si el OP está utilizando C# para todo lo demás, la introducción de VB.NET simplemente para guardar una cadena XML es ridícula. –

+0

No Mi publicación es un ejemplo de lo que una mente abierta puede hacer mediante el uso de proyectos de más de un idioma en la misma solución. La sintaxis del lenguaje VB es muy fácil de usar para XML. Yo uso tanto VB como C#. No está claro cuánto se hace "todo lo demás" en C# por pragadheesh. Quizás él explora alternativas. –

+8

Sigo diciendo que introducir otro idioma con el simple propósito de guardar una cadena XML es ridículo. De hecho, abre tu mente y piensa en lo que estás proponiendo: "Caramba, traeré una excavadora, aunque todo lo que necesito es una paleta, para mover esta taza llena de arena al jardín". –

Cuestiones relacionadas