0

我在 C# 中使用 XmlTextWriter 从 CSV 生成 XML,在结果 XML 中我得到以下标头<xml version="1.0" encoding="utf-8">,问题是将此 encoding=utf-8 替换为空字符串,以便标头变为<xml version="1.0"?>. 我已经搜索了很多,到目前为止还没有找到任何东西。很想知道解决这个问题的解决方案。生成它的代码如下 - :

var writer = new XmlTextWriter(s, Encoding.UTF8) {
                    Formatting = Formatting.Indented
                };
writer.WriteStartDocument();
4

2 回答 2

2

根据文档,有可能:

public XmlTextWriter(
  Stream w,
  Encoding encoding
)

编码
类型:System.Text.Encoding

要生成的编码。如果 encoding 为 null,它会将流写为 UTF-8,并从 ProcessingInstruction 中省略 encoding 属性。

于 2015-12-11T22:57:09.513 回答
0

您可以创建 XmlTextWriter 的子类:

public class XmlOmitEncodingWriter : XmlTextWriter
{
    public XmlOmitEncodingWriter(Stream w, Encoding encoding) : base(w, encoding)
    {}

    public XmlOmitEncodingWriter(string filename, Encoding encoding) : base(filename, encoding)
    {}

    public XmlOmitEncodingWriter(TextWriter w) : base(w)
    {}

    public override void WriteStartDocument()
    {
        WriteRaw("<?xml version=\"1.0\"?>");
    }
}

像这样使用它:

var writer = new XmlOmitEncodingWriter(s, Encoding.UTF8) {
                Formatting = Formatting.Indented
            };
writer.WriteStartDocument();

这将输出 <?xml version="1.0"?>。它还将支持以任何编码编写文档,而不是将您绑定到 UTF-8。

于 2015-12-11T23:02:18.157 回答