- PR -

XmlTextWriterのエンコーディング指定

1
投稿者投稿内容
はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2003-05-23 11:23
VS.NET(C#)で開発しています。

Webフォーム入力項目からXMLリクエストデータを作成し、
POSTしようとしています。
WSDLが提供されていないWebサービスなので、
XMLはXmlTextWriterで書き出そうとしています。

エンコーディングがShift-JISなので、設定したいのですが、
TextWriterでは、無理なのでしょうか?
(ヘルプ見ると、ダメそう)

ファイルの書き出しは避けたいところなのですが、
何か良い方法はないでしょうか。

よろしくお願いします。
NothingButXMLInfoSet
ベテラン
会議室デビュー日: 2003/03/31
投稿数: 65
投稿日時: 2003-05-23 14:23
XmlTextWriterのコンストラクタでEncodingを指定できます。
はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2003-05-23 15:26
回答ありがとうございます。

ただ、申し訳ありません。
私の質問が間違えていました。

私は、初め以下のようなコーディングを行いました。
------------------------------------------------------------
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
>>以下、ひたすらXML生成<<
------------------------------------------------------------
これだと、当然のことながら、作成されるXML宣言のエンコードは、「UTF-16」になりました。
このエンコードを「Shift-JIS」にしたいのです。

XmlTextWriterは、ファイルとストリームに対してはエンコードを指定できるようなのですが、
StringWriterではだめなようなのです。

StringWriterでも、「Shift-JIS」を指定できないか、ということです。
何度もすみませんが、よろしくお願いします。
NothingButXMLInfoSet
ベテラン
会議室デビュー日: 2003/03/31
投稿数: 65
投稿日時: 2003-05-23 19:16
こんな感じで、StringWriterの派生クラスを作るとイケそうです。

コード:
using System.IO;
using System;
using System.Xml;
using System.Text;

class SJISStringWriter : StringWriter {
    public override Encoding Encoding {
        get { return Encoding.Default; }
    }
}

class App {
    static void Main() {
        StringWriter e = new SJISStringWriter();
        XmlTextWriter w = new XmlTextWriter(e);
        w.WriteStartDocument();
        w.WriteStartElement("root");
        w.WriteEndDocument();
        w.Close();
        Console.WriteLine(e.ToString());
    }
}

はな
常連さん
会議室デビュー日: 2002/12/19
投稿数: 28
投稿日時: 2003-05-26 10:11
回答ありがとうございます。

おかげで、Shift-JISでの生成ができました。
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2003-05-26 10:13
こんにちは。

ファイルの書き出しを避けるのであれば、MemoryStreamを使うという手もありますね。
1

スキルアップ/キャリアアップ(JOB@IT)