如何将此字符串保存到XML文件中?

时间:2011-01-18 08:03:41

标签: c# 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>";

如何将此字符串保存到驱动器c中的XML文件中?使用c#。

6 个答案:

答案 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");

相关问题