2009-02-26 12 views
19

Ho una stringa e il suo valore è:Come si scrive una stringa XML su un file?

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

Come posso scrivere questa stringa in un file utilizzando C# 3.0?

Grazie in anticipo.

+1

Il titolo è molto fuorviante. Dovrebbe davvero dire qualcosa sul file I/O in C# – Akrikos

+0

Andrew perché il rollback? –

+0

Penso che dovremmo cercare di rispettare il post originale il più possibile includendo il materiale di "Ciao a tutti" poiché era quello che l'OP scriveva. Niente di personale :) –

risposta

0

Dovrai utilizzare CDATA section. Più in particolare, crea un XmlCDataSection utilizzando XmlDocument.CreateCDataSection e fornisci la stringa come parametro.

45

Prova questo:

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

ha l'ulteriore vantaggio che il carico non riuscirà se il vostro XML non è valido.

+2

+1 Consente inoltre di evitare di preoccuparsi della codifica, ecc. – bernhof

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

+1 Per il salvataggio dell'overhead nella conversione del file in un XDocument solo per ottenere una chiamata IO conveniente. Per la serializzazione o Xml non namespace questo approccio è più efficiente. – Jason

-3

So che hai detto C# ma hai provato VB.NET per XML Literals. Roba incredibile.

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 

Avviso l'elemento pulito che inietta il risultato di codice in uscita:

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

snip [opinioni rimossi]

+5

Questo non è il caso dello strumento giusto per il lavoro. Il tuo post è un esempio dei limiti di conoscere solo uno strumento e provare a forzare ogni cosa al suo interno. Se l'OP utilizza C# per tutto il resto, l'introduzione di VB.NET semplicemente per salvare una stringa XML è ridicola. –

+0

No Il mio post in un esempio di cosa può fare una mente aperta utilizzando progetti di più di una lingua nella stessa soluzione. La sintassi del linguaggio VB è molto facile da usare per XML. Io uso sia VB che C#. Non è chiaro quanto "tutto il resto" sia fatto in C# da pragadheesh. Forse esplora le alternative. –

+8

Continuo a dire che introdurre un altro linguaggio per il semplice scopo di salvare una stringa XML è ridicolo. In realtà apri la tua mente e pensa a quello che stai proponendo: "Accidenti, porterò un bulldozer, anche se tutto ciò di cui ho bisogno è una cazzuola, per spostare questo bicchiere pieno di sabbia nel giardino". –

Problemi correlati