gpt4 book ai didi

c# - XDocument.CreateWriter 使用 XmlWriterSettings

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:08 27 4
gpt4 key购买 nike

我正在尝试为 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();
}

我不知道如何将 writerSettings 应用于编写器。 XDocument.CreateWriter() 方法不采用任何参数来指定 XMLWriterSettings。而且,在创建之后,Settings 属性没有 setter 。

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

最佳答案

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

或者,您可以只调用 XDocument.ToString overloads 之一它从返回的字符串中省略了 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 交互。

关于c# - XDocument.CreateWriter 使用 XmlWriterSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29040982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com