2009-02-26 7 views
19

J'ai une chaîne et sa valeur est:Comment écrire une chaîne XML dans un fichier?

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

Comment puis-je écrire cette chaîne à un fichier en utilisant C# 3.0?

Merci d'avance.

+1

Le titre est trompeur. Il devrait vraiment dire quelque chose sur le fichier I/O en C# – Akrikos

+0

Andrew pourquoi le rollback? –

+0

Je pense que nous devrions essayer de respecter le plus possible le message original, y compris le "Salut tout le monde", car c'est ce que l'OP a écrit. Rien de personnel :) –

Répondre

0

Vous devrez utiliser CDATA section. Plus précisément, créez un XmlCDataSection en utilisant XmlDocument.CreateCDataSection et indiquez votre chaîne en tant que paramètre.

45

Essayez ceci:

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

a l'avantage supplémentaire que la charge échouera si votre XML est invalide.

+2

+1 Vous évite également de vous soucier de l'encodage, etc. – bernhof

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

+1 Pour économiser les frais généraux lors de la conversion du fichier en document XDocument juste pour obtenir un appel d'E/S pratique. Pour la sérialisation ou le Xml sans nom, cette approche est plus efficace. – Jason

-3

Je sais que vous avez dit C# mais avez-vous essayé VB.NET pour XML Literals. Des trucs incroyables.

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 

Remarquez l'élément propre qui injecte le résultat du code dans la sortie:

<?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 [des avis removed]

+5

Ce n'est pas un bon outil pour le travail. Votre message est un exemple des limites de la connaissance d'un seul outil et de la tentative de tout forcer. Si l'OP utilise C# pour tout le reste, l'introduction de VB.NET simplement pour sauvegarder une chaîne XML est ridicule. –

+0

Non Mon article est un exemple de ce que peut faire un esprit ouvert en utilisant des projets de plusieurs langues dans la même solution. La syntaxe du langage VB est très facile à utiliser pour XML. J'utilise à la fois VB et C#. On ne sait pas combien "tout le reste" est fait en C# par pragadheesh. Peut-être qu'il explore des alternatives. –

+8

Je dis toujours que l'introduction d'une autre langue dans le simple but de sauvegarder une chaîne XML est ridicule. En fait, ouvrez votre esprit et pensez à ce que vous proposez: «Eh bien, je vais apporter un bulldozer, même si tout ce dont j'ai besoin est une truelle, pour déplacer cette tasse pleine de sable dans le jardin." –

Questions connexes