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

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

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

Re[2]: Vb.Net XMLファイルで改行が復元されない


(過去ログ 31 を表示中)

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

■15247 / inTopicNo.1)  Vb.Net XMLファイルで改行が復元されない
  
□投稿者/ もんきっき (4回)-(2008/03/09(Sun) 14:30:29)

分類:[.NET 全般] 

http://dobon.net/vb/dotnet/file/xmlserializer.html
オブジェクトの内容をXMLファイルに保存する
Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(SampleClass))
Dim fs As New System.IO.FileStream(fileName, System.IO.FileMode.Create)
serializer.Serialize(fs, cls)

上記方法で STRING型 の文字列をファイルに保存して、復元すると改行が復元されません
メモ帳上では「↑」に似た記号で表示されており、
TERAPAD で開くと改行されています
vb.netのTextboxに表示すると、改行されていません。

お分かりになる方がいらっしゃいましたら、ご教授お願いいたします。

引用返信 編集キー/
■15249 / inTopicNo.2)  Re[1]: Vb.Net XMLファイルで改行が復元されない
□投稿者/ Azulean (23回)-(2008/03/09(Sun) 14:50:15)
DOBON.NETさんのところにも掲示板がありますが、なぜこちらに?
比較的最近の記事で同様の話題が挙がっていましたよ。

http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=21530&space=0&no=0
引用返信 編集キー/
■15257 / inTopicNo.3)  Re[1]: Vb.Net XMLファイルで改行が復元されない
□投稿者/ 魔界の仮面弁士 (675回)-(2008/03/09(Sun) 18:55:53)
2008/03/09(Sun) 19:14:07 編集(投稿者)

No15247 (もんきっき さん) に返信
> Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(SampleClass))
> Dim fs As New System.IO.FileStream(fileName, System.IO.FileMode.Create)
> serializer.Serialize(fs, cls)
> 上記方法で STRING型 の文字列をファイルに保存して、復元すると改行が復元されません

XML データの正規化の仕様上、元の改行コードが CR LF であったとしても、
デシリアライズされる段階では、LF になってしまいます。

XML 仕様の[2.11 End-of-Line Handling(行末の処理)]を参照のこと。
http://www.w3.org/TR/2004/REC-xml-20040204/#sec-line-ends
http://www.doraneko.org/xml/xml10/19980210/Overview.html#sec-line-ends



> お分かりになる方がいらっしゃいましたら、ご教授お願いいたします。
デシリアライズの際に XmlReaderを使うようにし、そこで PreserveWhitespace を指定しておくと、
どうやら CR/LF が維持されるようです。

 Dim doc As New XmlDocument()
 doc.PreserveWhitespace = True
 doc.Load(fileName)
 Dim reader As New XmlNodeReader(doc.DocumentElement)
 Dim o As Object = serializer.Deserialize(reader)
 cls = DirectCast(o, SampleClass)

Deserialize メソッドに FileStream 等を渡した場合には、CR が消えてしまうようなので、
XmlReader を使えない場合には、事前/事後の変換作業が必要になるかと。
引用返信 編集キー/
■15304 / inTopicNo.4)  Re[2]: Vb.Net XMLファイルで改行が復元されない
□投稿者/ もんきっき (5回)-(2008/03/10(Mon) 23:07:45)
Azulean 様
魔界の仮面弁士 様

どうもありがとうございます。
ばっちり解決しました。

Dim ファイルパス
Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(●●●●))
Dim doc As New XmlDocument()
doc.PreserveWhitespace = True
doc.Load(ファイルパス)
Dim reader As New XmlNodeReader(doc.DocumentElement)
Dim o As Object = serializer.Deserialize(reader)
cls = DirectCast(o, ●●●●)


>DOBON.NETさんのところにも掲示板

すみません。
とくに何も考えずに投稿しました。
確かに失礼でした。
今後気をつけたいと思います。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -