我有这个字符串变量:
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>";
如何将此字符串保存到驱动器c中的XML文件中?使用c#。
答案 0 :(得分:58)
它的XML基本上是无关紧要的。您可以使用File.WriteAllText
非常简单地将任何文本保存到文件中:
File.WriteAllText("foo.xml", xml);
请注意,您还可以指定编码,默认为UTF-8。例如,如果要以纯ASCII格式编写文件:
File.WriteAllText("foo.xml", xml, Encoding.ASCII);
答案 1 :(得分:10)
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(yourXMLString);
xdoc.Save("myfilename.xml");
答案 2 :(得分:7)
如果您不需要对字符串进行任何处理(例如,使用XML库),您可以这样做:
File.WriteAllText(@"c:\myXml.xml", xml);
答案 3 :(得分:6)
System.IO.File.WriteAllText("filename.xml", xml );
答案 4 :(得分:2)
你可以这样做:
string path = @"C:\testfolder\testfile.txt";
using (System.IO.StreamWriter file = new System.IO.StreamWriter(path))
{
file.Write(text);
}
您也可以在创建XML文档后执行此操作,但速度较慢:
xdoc.Save
答案 5 :(得分:1)
如果您希望按原样保存字符串而不检查其是否格式正确或有效,则如上所述,请使用System.IO.File.WriteAllText("C:\myfilename.xml", xml );
正如我们已经注意到的,这默认为将文件保存为UTF-8,但您可以指定编码为Jon Skeet。
我建议在字符串中添加XML声明,例如
<?xml version="1.0" encoding="UTF-8"?>
并确保声明中的编码与WriteAllText方法中的编码匹配。从堆栈溢出的XML编码问题的频率来看,它可能会在以后节省相当多的麻烦。
如果要确保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");