Как сохранить эту строку в 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");