XMLTextWriterのCRLFの代わりに、CRでXMLを生成するにはどうすればよいですか
-
26-09-2019 - |
質問
XMLTextWriter経由でXMLを生成しています。
ファイルは私の目には良さそうです、検証します(WC3で)、そしてクライアントによって受け入れられました。
しかし、クライアントベンダーは、CRだけでなく、ラインエンドがCRLFであると不平を言っています。
さて、私はC#を使用してWin32マシンを使用しており、CRLFはWin32標準ラインエンドです。 XMLTextWriterのラインエンドを変更する方法はありますか?
また、ラインエンドは適切なXMLパーサーにとって重要ではありませんか?
参照: キャリッジリターン、ラインフィード、フォームフィードとは何ですか?
注:唯一の答えは横向きのソリューションであるように見えます - xmltextwriterの代わりにxmlwriterを使用する必要があります
解決
もちろん、尋ねた後、私はMSDNの手がかりを見つけます(Googleで見つけることができなかったもの) xmlwritersettings.newlinechars
その後、私は受け入れられない答えに導かれました SO:特定のNewLine文字(C#)を使用してファイルするXMLDocumentを書く
それはすべて用語にあります.....
他のヒント
XMLWriterSettingsを使用して、必要なものをラインチャーの終わりとして設定します。
XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.NewLineChars = "\r";
XmlWriter writer = XmlWriter.Create(
new StreamWriter(@"c:\temp\hello.xml", mySettings);
ラインのキャラクターがどこで重要であるかはわかりません。私は以前にそれに遭遇したことがありません。
使用されるラインエンディングは、適切に実装されたパーサーにとって重要ではありません(参照 仕様)、私は引用します(私の強調):
アプリケーションのタスクを簡素化するために、XMLプロセッサ すべてのラインブレークを正規化したかのように動作する必要があります 2文字のシーケンス#XD #XAと#XAが単一の#XA文字に続いていない#XDの両方を翻訳することにより、解析前の外部解析エンティティ(ドキュメントエンティティを含む)では、解析前に。
したがって、あなたは今それを持っている方法で大丈夫でなければなりません。クライアントベンダーが実際にそこで何をしているのか尋ねたいと思うかもしれません。彼らが間違っている可能性があります。
xmlwritersettings.newlinecharsプロパティを使用します。