C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: XmlSerializerで、Shift-JISエンコード


(過去ログ 24 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■10541 / inTopicNo.1)  XmlSerializerで、Shift-JISエンコード
  
□投稿者/ サイトー (9回)-(2007/11/20(Tue) 14:15:51)

分類:[.NET 全般] 

お世話になります。サイトーです。

WindowsXP、VS2005のC#で、XmlSerializerを使用したプログラムを試しています。

エンコードをShift-JISでシリアライズし、さらに1行ごとに改行をいれたいのですが、
▼▼▼▼▼
XmlSerializer serializer = new XmlSerializer(typeof(hoge))
using (XmlTextWriter writer = new XmlTextWriter(@"c:\test.xml", System.Text.Encoding.GetEncoding("Shift-JIS")))
{
    serializer.Serialize(fs, this);
    fs.Close();
}
▲▲▲▲▲
としたところ、改行されず全部で一行になってしまいました。


以下のようにFileStreamを使用すると改行されるのですが、
▼▼▼▼▼
XmlSerializer serializer = new XmlSerializer(typeof(hoge))
using (FilseStream fs = new FileStream(@"c:\test.xml", FileMode.Create))
{
    serializer.Serialize(fs, this);
    fs.Close();
}
▲▲▲▲▲
この場合、エンコードの指定方法がわかりません。


すみませんが、ご教授いただけませんでしょうか。

(ちなみに改行を入れたい理由ですが、
 ユーザーが開いて編集してもらいたいXMLファイルなので、見やすくするためです)

引用返信 編集キー/
■10542 / inTopicNo.2)  Re[1]: XmlSerializerで、Shift-JISエンコード
□投稿者/ れい (213回)-(2007/11/20(Tue) 14:37:19)
No10541 (サイトー さん) に返信
> XmlSerializer serializer = new XmlSerializer(typeof(hoge))
> using (XmlTextWriter writer = new XmlTextWriter(@"c:\test.xml", System.Text.Encoding.GetEncoding("Shift-JIS")))
> {
> serializer.Serialize(fs, this);
> fs.Close();
> }
fsが定義されて無いですが。

XmlTextWriter.FormattingとかIndentationとかを使えばよいと思います。


引用返信 編集キー/
■10543 / inTopicNo.3)  Re[2]: XmlSerializerで、Shift-JISエンコード
□投稿者/ サイトー (10回)-(2007/11/20(Tue) 14:55:47)
2007/11/20(Tue) 14:56:01 編集(投稿者)
No10542 (れい さん) に返信

>>XmlSerializer serializer = new XmlSerializer(typeof(hoge))
>>using (XmlTextWriter writer = new XmlTextWriter(@"c:\test.xml", System.Text.Encoding.GetEncoding("Shift-JIS")))
>>{
>>    serializer.Serialize(fs, this);
>>    fs.Close();
>>}
> fsが定義されて無いですが。

あ、本当ですね。すみません。
開発マシンと、ネットがつながるマシンが別であるため、手でソースを移していた際に失敗していました。
質問する側であるのに、示したソースがチェック不足で間違えているとは、大変失礼しました。


> XmlTextWriter.FormattingとかIndentationとかを使えばよいと思います。

ありがとうございます。おかげさまで、無事思ったように動作させることができました。
念のためソースを下記に残しておきます。
▼▼▼▼▼
XmlSerializer serializer = new XmlSerializer(typeof(hoge))
using (XmlTextWriter writer = new XmlTextWriter(@"c:\test.xml", System.Text.Encoding.GetEncoding("Shift-JIS")))
{
    writer.Formatting = Formatting.Indented;
    writer.Indentation = 4;
    serializer.Serialize(writer, this);
    fs.Close();
}
▲▲▲▲▲
このソースにて、改行・インデントありのXML出力ができました。

どうもありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -