【问题标题】:How do I write an XML string to a file?如何将 XML 字符串写入文件?
【发布时间】:2009-02-26 14:59:15
【问题描述】:

我有一个字符串,它的值为:

<ROOT>
    qwerty
    <SampleElement>adsf</SampleElement> 
    <SampleElement2>The text of the sample element2</SampleElement2> 
</ROOT>

如何使用 C# 3.0 将此字符串写入文件?

提前致谢。

【问题讨论】:

  • 标题非常具有误导性。它真的应该说一下 C# 中的文件 I/O
  • 安德鲁为什么要回滚?
  • 我认为我们应该尽量尊重原始帖子,包括“大家好”的东西,因为那是 OP 写的。没什么私人的:)
  • 很公平 - 当你回滚时,你可以投入一些理性,以防止我们在过去几天看到的回滚战争! :D
  • 啊,是的!这是一个很好的建议——我以后会这样做——谢谢!

标签: c# xml .net-3.0


【解决方案1】:

试试这个:

string s = "<xml><foo></foo></xml>";
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(s);
xdoc.Save("myfilename.xml");

如果您的 XML 无效,加载将会失败。

【讨论】:

    【解决方案2】:
    File.WriteAllText("myFile.xml",myString);
    

    【讨论】:

    • +1 用于节省将文件转换为 XDocument 的开销,只是为了获得方便的 IO 调用。对于序列化或非命名空间的 Xml,这种方法更有效。
    【解决方案3】:

    您必须使用CDATA section。更具体地说,使用XmlDocument.CreateCDataSection 创建一个XmlCDataSection 并将您的字符串作为参数提供。

    【讨论】:

      【解决方案4】:

      我知道您说的是 C#,但您是否尝试过使用 VB.NET for XML Literals。很棒的东西。

      Public Class Program
          Public Shared Sub Main()
              Dim myKeyBoardStyle = "dvorak"
      
              Dim myXML As XElement = <ROOT>
                                      qwerty
                                      <altKeyboard><%= myKeyBoardStyle.ToUpper() %></altKeyboard>
                                          <SampleElement>adsf</SampleElement>
                                          <SampleElement2>The text of the sample element2</SampleElement2>
                                      </ROOT>
      
              Console.WriteLine(myXML.ToString())
      
              myXML.Save(".\fileFromXElement.xml")
          End Sub
      End Class
      

      注意将代码结果注入输出的整洁元素:

      <?xml version="1.0" encoding="utf-8"?>
      <ROOT>
                                      qwerty
                                      <altKeyboard>DVORAK</altKeyboard><SampleElement>adsf</SampleElement><SampleElement2>The text of the sample element2</SampleElement2></ROOT>
      

      snip [删除的意见]

      【讨论】:

      • 这不是适合工作的工具。您的帖子是仅知道一种工具并试图将所有东西都强加给它的限制的一个例子。如果 OP 将 C# 用于其他所有内容,那么仅仅为了保存 XML 字符串而引入 VB.NET 是荒谬的。
      • 否 我的帖子举例说明了通过在同一解决方案中使用多于一种语言的项目,开放的思想可以做什么。 VB 语言语法非常容易用于 XML。我同时使用 VB 和 C#。目前尚不清楚 pragadheesh 在 C# 中做了多少“其他事情”。也许他会探索替代方案。
      • 我仍然说为了保存 XML 字符串的简单目的而引入另一种语言是荒谬的。实际上打开你的思想,想想你的提议:“哎呀,我会带一台推土机,尽管我只需要一把泥刀,把这个装满沙子的杯子搬到花园里。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 2016-05-14
      • 2011-10-24
      相关资源
      最近更新 更多