【问题标题】:How to save this string into XML file?如何将此字符串保存到 XML 文件中?
【发布时间】:2011-01-18 08:03:41
【问题描述】:

我有这个字符串变量:

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#。

【问题讨论】:

  • 使用 System.IO.File 类方法。

标签: c# xml


【解决方案1】:

它是 XML 的事实基本上是无关紧要的。您可以使用File.WriteAllText 非常简单地将任何文本保存到文件中:

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

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

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

【讨论】:

  • 如果先生,如果我想将保存的 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 声明实际上是在撒谎。
【解决方案2】:
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(yourXMLString);
xdoc.Save("myfilename.xml");

【讨论】:

    【解决方案3】:

    如果您不需要对字符串进行任何处理(例如使用 XML 库),您可以这样做:

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

    【讨论】:

    • +1 为了使用正确的路径,应该为 OP 节省一些麻烦。 :)
    【解决方案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】:

        如果您想按原样保存字符串而不对其是否格式正确或有效进行任何检查,那么正如上面已回答的那样,请使用System.IO.File.WriteAllText("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); 如果要保留空格,则该方法也将被覆盖:@ 987654325@

        然后您可以对其进行验证http://msdn.microsoft.com/en-us/library/bb340331.aspx

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-29
          • 1970-01-01
          • 1970-01-01
          • 2012-02-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多