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

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 に答える