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

C# 如何将此字符串保存到XML文件中?,c#,xml,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=""Mo

我有一个字符串变量:

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>";
stringxml=@”
帕特里克·海因斯
206-555-0144 
425-555-0145 
332-899-5678 
主街123号
美世岛
华盛顿州
68042
李多萝西
910-555-1212 
336-555-0123 
336-555-0005 
16号鸭修士酒店
格林斯波罗
数控
27410
";

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

如果不需要对字符串进行任何处理(例如,使用XML库),则可以执行以下操作:

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

它是XML这一事实基本上是不相关的。您只需使用以下工具即可将任何文本保存到文件中:

注意,您还可以指定编码,默认为UTF-8。例如,如果您想用普通ASCII编写文件:

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

如果您想将字符串保存为原样,而不检查其格式是否正确或有效,那么如上所述,请使用
System.IO.File.writealText(“C:\myfilename.xml”,xml)

正如已经注意到的,这默认将文件保存为UTF-8,但是您可以指定Jon Skeet提到的编码

我建议在字符串中添加一个XML声明,例如

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

并确保声明中的编码与WriteAllText方法中的编码匹配。从stackoverflow上XML编码问题的频率来看,这可能会在以后节省大量的麻烦

如果要确保XML格式正确和/或有效,则需要首先对其使用XML解析器,例如
XDocument doc=XDocument.Parse(str)
如果要保留空白,该方法也会被重写:
XDocument.Parse(str,LoadOptions.PreserveWhitespace)

然后可以对其执行验证

保存到文件之前:
doc.Save(“C:\myfilename.xml”)

您可以执行以下操作:

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

using (System.IO.StreamWriter file = new System.IO.StreamWriter(path))
{    
    file.Write(text);  
}
也可以在创建XML文档后执行此操作,但速度较慢:

xdoc.Save

使用System.IO.File类方法。+1用于使用正确的路径,应该为操作省去一些麻烦。:)如果先生,如果我想将保存的xml作为字符串读回我的程序,该怎么办?我应该使用
XmlTextReader
?@yonan2236:然后只使用
File.ReadAllText
。正如Jon Skeet所说,您似乎并没有真正做任何特定于XML的事情;你只想对文本数据进行基本的文件I/O吗?@yonan2236:这并不是问题本身就错了,而是它混合了两个概念:保存一个文本文件,文本文件的内容是XML。我还建议在字符串中添加一个XML声明,并确保声明中的编码与WriteAllText方法中的编码匹配。从stackoverflow上XML编码问题的频率来看,这可能会在以后节省大量的麻烦。@stt106:这只是意味着字符串包含文本
encoding=“utf-16”
。这不会被
File.WriteAllText
中指定的任何编码所改变-它只是字符串的一部分。该文件仍将以UTF-8编码,这意味着XML声明实际上是谎言。
<?xml version="1.0" encoding="UTF-8"?>
string path = @"C:\testfolder\testfile.txt";

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