如何使用C#编写xml文件

问题描述

| 我是c#asp.net中的新手。 我想在C#代码中的asp.net Web应用程序中的文件后面编写xml文件,并将此xml文件作为字符串传递给webservice。任何人都可以帮助我,这对我的项目很有用。 谢谢     

解决方法

        正如\“ 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及更高版本上受支持     ,        您可以使用
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
),如其他答案所示。     ,        您可以使用XMLDocument类。它具有创建XML元素的各种“ 9”方法。 似乎不需要保存XML文件,因此完成后,可以使用
Save(String)
方法将其序列化为字符串。     ,        看到这个问题: 如何在C#中构建XML? 如果您使用的是.Net4,则XDocument类将起作用,对于.Net2,请使用XmlDocument。 XDocument.ToString()直接将XML作为字符串返回。对于XmlDocument类,您将使用XmlDocument.Save()方法将其保存到流或TextWriter XmlDocument.OuterXml属性。 这个问题的两个示例都演示了如何将其输出为字符串。您可以使用该字符串将字符串传递到Web服务。     ,        
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();