【问题标题】:How to write xml file using C#如何使用 C# 编写 xml 文件
【发布时间】:2011-09-17 15:37:18
【问题描述】:

我是 c# asp.net 的新人。 我想在我的 asp.net Web 应用程序的 c# 代码隐藏文件中编写 xml 文件,并将这个 xml 文件作为字符串传递给 webservice 。任何人都可以帮助我,这对我的项目非常有用。 谢谢你

【问题讨论】:

  • 问题不太清楚,请详细说明...您到底想做什么?

标签: c# asp.net


【解决方案1】:

您可以使用XMLDocument 类。它有各种 CreateXXX 方法来创建 XML 元素。

看来您不需要保存 XML 文件,因此您可以在完成后使用Save(String) 方法将其序列化为字符串。

【讨论】:

    【解决方案2】:

    看到这个问题: How can I build XML in C#?

    如果您使用 .Net4,XDocument 类可以工作,对于 .Net2,请使用 XmlDocument

    XDocument.ToString() 直接将 XML 作为字符串返回。对于 XmlDocument 类,您可以使用 XmlDocument.Save() 方法来保存到流或 TextWriter XmlDocument.OuterXml 属性。

    关于该问题的两个示例都演示了如何将其输出为字符串。您可以使用它将字符串传递给您的网络服务。

    【讨论】:

      【解决方案3】:
      using System.Xml;
      using System.Xml.Schema;
      
      XmlTextWriter xtwFeed = new XmlTextWriter(Server.MapPath("rss.xml"), Encoding.UTF8);
      
              xtwFeed.WriteStartDocument();
      
              // The mandatory rss tag
      
              xtwFeed.WriteStartElement("rss");
      
              xtwFeed.WriteAttributeString("version", "2.0");
      
              // Write all the tags like above and end all elements
      
              xtwFeed.WriteEndElement();
              xtwFeed.WriteEndDocument();
              xtwFeed.Flush();
              xtwFeed.Close();
      

      【讨论】:

      • 您可以创建一个 StringWriter 并将其传递给 XmlTextWriter 构造函数并在其上调用 ToString 以获取字符串形式的结果。
      【解决方案4】:

      您可以使用XmlSerializer 类来序列化 XML 中的对象:

      序列化到文件:

          void SaveAsXmlToFile(object o, string fname)
          {
              XmlSerializer ser = new XmlSerializer(o.GetType());
              using (var f = File.Open(fname, FileMode.OpenOrCreate))
                  ser.Serialize(f, o);
          }
      

      你也可以像XmlSerializer一样使用DataContractSerializer类。

      你也可以将一个对象序列化为一个字符串,然后返回:

      序列化为字符串:

          string ToXml(object o)
          {
              XmlSerializer ser = new XmlSerializer(o.GetType());
              StringBuilder sb = new StringBuilder();
              using (StringWriter sw = new StringWriter(sb))
                  ser.Serialize(sw, o);
              return sb.ToString();
          }
      

      此外,如果您需要对生成的 Xml 进行更多控制,您可以使用结构化的 xml 对象,如 XmlDocument 等,或使用 xml 编写类,如 XmlWriter,如其他答案所示。

      【讨论】:

        【解决方案5】:

        正如“fiver”所提到的,您可以使用 XmlDocument 或新的简化版本 XDocument 来创建 XML 文档。这是来自MSDN 的示例代码 sn-p,用于创建 XML 文档并写入文件。

        XDocument doc = new XDocument(
            new XElement("Root",
                new XElement("Child", "content")
            )
        );
        doc.Save("Root.xml");
        

        这会将以下文本写入 xml 文件

        <?xml version="1.0" encoding="utf-8"?>
        <Root>
          <Child>content</Child>
        </Root>
        

        注意:XDocument 仅在 .NET framework 3.5 及更高版本上受支持

        【讨论】:

          猜你喜欢
          • 2012-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-07
          相关资源
          最近更新 更多