2011年9月6日火曜日
XMLドキュメントでは改行は¥nで、¥r¥nではない
C#(.NET Framework)でXMLドキュメントを保存すると、要素 (element) の内容に改行が存在していても、改行は\r\nではなく、\nになる。
XMLドキュメントの読み込み時などに\nから\r\nに変換しないと、TextBox上で改行表示されないなど、Windowsでは改行として扱われない。
これはXMLドキュメントの仕様を定めているW3Cが、改行コードは\n(LF)としているため、Windowsでの改行コード、\r\n(CR+LF)と異なる。改行コードを\nとしているのは、すでにMacやLinuxなどのUNIX系では\nであり、OSによる改行コードの違いの混乱を避けるためだ。.NET FrameworkでXMLドキュメントを保存する場合でも、これに従い\rを削除し\nのみを保存する。
保存時に、改行が\nで保存されるのは、W3Cの仕様に従ったものだから問題ないとしても(XMLドキュメントもテキストファイルであると考えた場合、Windows上で改行コードの異なるテキストファイルが存在するという問題は無視して)、読み込み時に.NET Frameworkが改行コードをどのように扱うかが問題となってくる。
実際に、XDocument.Loadメソッドで読み込むと、改行は\nのままで読み込まれる。XDocument.LoadメソッドにはLoadOptionsを指定できるが、改行コードを\nから\r\nに変換してくれるようなオプションは見当たらない。
String.Replace("\n", "\r\n")とするなどして、改行コードを変換するしか方法はなさそうだ。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿