使用C#如何编写XML文件

3

我是一个刚接触C# ASP.NET的新手。 我想在我的ASP.NET Web应用程序中,在代码后台文件中编写XML文件,并将此XML文件作为字符串传递给Web服务。有人能帮助我吗?这对我的项目非常有用。 谢谢。


问题不太清楚,请再详细说明一下...您到底想做什么? - Miguel Angelo
5个回答

3
您可以使用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

3

正如"fiver"所提到的,您可以使用XmlDocument或新的简化版本XDocument来创建XML文档。以下是从MSDN中获取的用于创建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及以上版本。

2
您可以使用 XMLDocument 类。它有各种 CreateXXX 方法来创建 XML 元素。
看起来您不需要保存 XML 文件,因此在完成后可以使用 Save(String) 方法将其序列化为字符串。

1
请看这个问题: 如何在C#中构建XML? 如果您使用的是.Net4,则可以使用XDocument类,对于.Net2,请使用XmlDocumentXDocument.ToString()直接返回XML字符串。对于XmlDocument类,您将使用XmlDocument.Save()方法保存到流或TextWriter XmlDocument.OuterXml属性。
该问题上的两个示例都演示了如何将其输出为字符串。您可以使用它将字符串传递给您的Web服务。

0
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 方法来获取结果作为字符串。 - Jason Goemaat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接