Как сохранить эту строку в XML файле?

У меня есть эта строковая переменная:

string xml = @"<Contacts> 
    <Contact> 
    <Name>Patrick Hines</Name> 
    <Phone Type=""Home"">206-555-0144</Phone> 
    <Phone Type=""Work"">425-555-0145</Phone> 
    <Phone Type=""Mobile"">332-899-5678</Phone> 
    <Address> 
        <Street1>123 Main St</Street1> 
        <City>Mercer Island</City> 
        <State>WA</State> 
        <Postal>68042</Postal> 
    </Address> 
    </Contact> 
    <Contact> 
    <Name>Dorothy Lee</Name> 
    <Phone Type=""Home"">910-555-1212</Phone> 
    <Phone Type=""Work"">336-555-0123</Phone> 
    <Phone Type=""Mobile"">336-555-0005</Phone> 
    <Address> 
        <Street1>16 Friar Duck Ln</Street1> 
        <City>Greensboro</City> 
        <State>NC</State> 
        <Postal>27410</Postal> 
    </Address> 
    </Contact>
</Contacts>";

Как сохранить эту строку в файле XML в моем диске c? Использование С#.

Ответы

Ответ 1

Тот факт, что он XML в основном не имеет значения. Вы можете сохранить любой текст в файл очень просто с помощью File.WriteAllText:

File.WriteAllText("foo.xml", xml);

Обратите внимание, что вы также можете указать кодировку, которая по умолчанию соответствует UTF-8. Так, например, если вы хотите записать файл в простой ASCII:

File.WriteAllText("foo.xml", xml, Encoding.ASCII);

Ответ 2

Если вам не нужно выполнять какую-либо обработку в строке (например, с помощью библиотеки XML), вы можете просто сделать:

File.WriteAllText(@"c:\myXml.xml", xml);

Ответ 3

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(yourXMLString);
xdoc.Save("myfilename.xml");

Ответ 4

System.IO.File.WriteAllText("filename.xml", xml );

Ответ 5

Вы можете сделать это:

string path = @"C:\testfolder\testfile.txt";

using (System.IO.StreamWriter file = new System.IO.StreamWriter(path))
{    
    file.Write(text);  
}

Вы также можете сделать это после создания XML-документа, но он медленнее:

xdoc.Save

Ответ 6

Если вы хотите сохранить строку as-is без какой-либо проверки правильности или достоверности строки, то, как было сказано выше, используйте System.IO.File.WriteAllText("C:\myfilename.xml", xml );

Как также было отмечено, это по умолчанию сохраняет файл как UTF-8, но вы можете указать кодировку, как упоминал Джон Скит.

Я бы рекомендовал добавить объявление XML в строку, например,

<?xml version="1.0" encoding="UTF-8"?>

и обеспечить соответствие кодировки в объявлении методу WriteAllText. Вероятно, это сэкономит массу хлопот на более поздний срок, судя по частоте вопросов кодирования XML в stackoverflow.

Если вы хотите, чтобы XML был хорошо сформирован и/или действителен, вам сначала необходимо использовать синтаксический анализатор XML, например XDocument doc = XDocument.Parse(str);. Этот метод также переопределяется, если вы хотите сохранить пробел: XDocument.Parse(str, LoadOptions.PreserveWhitespace)

Затем вы можете выполнить валидацию http://msdn.microsoft.com/en-us/library/bb340331.aspx

перед сохранением в файл: doc.Save("C:\myfilename.xml");