如何使用没有声明元素的xml编写器创建xml

nin*_*pug 21 .net c# xml xmlwriter

我正在使用XmlWriter.Create()一个编写器实例然后编写XML,但结果有<?xml version="1.0" encoding="utf-16" ?>,我怎么告诉我的xml编写器不生成它?

Kir*_*huk 30

使用XmlWriterSettings.OmitXmlDeclaration.

不要忘记设置XmlWriterSettings.ConformanceLevelConformanceLevel.Fragment.


Cam*_*ron 5

您可以子类化XmlTextWriter并覆盖该WriteStartDocument()方法以不执行任何操作:

public class XmlFragmentWriter : XmlTextWriter
{
    // Add whichever constructor(s) you need, e.g.:
    public XmlFragmentWriter(Stream stream, Encoding encoding) : base(stream, encoding)
    {
    }

    public override void WriteStartDocument()
    {
       // Do nothing (omit the declaration)
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var stream = new MemoryStream();
var writer = new XmlFragmentWriter(stream, Encoding.UTF8);
// Use the writer ...
Run Code Online (Sandbox Code Playgroud)

参考:Scott Hanselman撰写的这篇博客文章.