XDocument.CreateWriter using XmlWriterSettings

本文关键字:XmlWriterSettings using CreateWriter XDocument | 更新日期: 2024-12-05 17:52:25

我正在尝试为XDocument创建一个XMLWriter,并对其应用设置,但我不知道如何。

这是我到目前为止所拥有的。

        var writerSettings = new XmlWriterSettings()
        {
            OmitXmlDeclaration = true,
            Encoding = Encoding.UTF8
        };
        var request = new XDocument();
        using (var writer = request.CreateWriter())
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("CUSTOMER");
            writer.WriteElementString("ADDRESS", "123 Fake St.");
            writer.WriteElementString("CITY", "San Jose");
            writer.WriteElementString("STATE", "CA");
            writer.WriteEndElement();
            writer.WriteEndDocument();
        }

我不知道如何将作家设置应用于编写器。 XDocument.CreateWriter() 方法不需要任何参数来指定 XMLWriterSettings。 而且,创建后,"设置"属性没有资源库。

如果没有办法使用 CreateWriter() 并应用设置,我还能如何完成等效的事情,并最终得到相同的结果?

XDocument.CreateWriter using XmlWriterSettings

如果使用XDocument.Save(XmlWriter),则可以创建自己的XmlWriter提供XmlWriterSettings参数,并将XDocument的内容写入其中。

或者,您可以只调用XDocument.ToString重载之一,该重载从返回的字符串中省略 XML 声明(如果这就是您要配置的全部内容)。

您的示例在下面更新以显示这两个选项:

using System;
using System.Text;
using System.Xml;
using System.Xml.Linq;
class Program
{
    static void Main(string[] args)
    {
        var request = new XDocument();
        using (var writer = request.CreateWriter())
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("CUSTOMER");
            writer.WriteElementString("ADDRESS", "123 Fake St.");
            writer.WriteElementString("CITY", "San Jose");
            writer.WriteElementString("STATE", "CA");
            writer.WriteEndElement();
            writer.WriteEndDocument();
        }
        // XDocument.ToString() will print:
        //<CUSTOMER>
        //  <ADDRESS>123 Fake St.</ADDRESS>
        //  <CITY>San Jose</CITY>
        //  <STATE>CA</STATE>
        //</CUSTOMER>
        Console.WriteLine(request.ToString());
        // And here's how to use the XmlWriterSettings with XDocument.Save:
        var writerSettings = new XmlWriterSettings()
        {
            OmitXmlDeclaration = true,
            Encoding = Encoding.UTF8
        };
        using (var writer = XmlWriter.Create("test.xml", writerSettings))
        {
            request.Save(writer);
        }
        // The above will write (you could adjust the XmlWriterSettings to add whitespace):
        //<CUSTOMER><ADDRESS>123 Fake St.</ADDRESS><CITY>San Jose</CITY><STATE>CA</STATE></CUSTOMER>
    }
}

或者,如果您没有使用XDocument的任何其他功能,则可以首先创建自己的XmlWriter实例,并将节点添加到其中,并完全省略XDocument交互。

或者,使用 xmlwriter 的静态方法,即 create()

using (XmlWriter writer = XmlWriter.Create(filePath, settings))
{ 
//do your thing 
} 

以前遇到过这个问题,我同意这不是很明显,尤其是在尝试做一个新的 xmlwriter 时。

编辑:也可能重复 如何在 XmlTextWriter 中设置设置属性,以便我可以将每个 XML 属性写入其自己的行?

如果您愿意,可以参考进一步阅读!

相关文章:
  • 没有找到相关文章