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