■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 を使えない場合には、事前/事後の変換作業が必要になるかと。
|
|