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.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 属性写入其自己的行?
如果您愿意,可以参考进一步阅读!