开发者

How can I generate XML with CR, instead of CRLF in XmlTextWriter

I'm generating XML via XmlTextWriter.

The file looks good to my eyes, validates (at wc3), and was accepted by the client.

But a client ven开发者_C百科dor is complaining that the line-endings are CRLF, instead of just CR.

Well, I'm on a Win32 machine using C#, and CRLF is the Win32 standard line-ending. Is there any way to change the line-endings in the XmlTextWriter?

Also -- shouldn't the line-endings not matter to a proper XML parser?

see also: What are carriage return, linefeed, and form feed?

NOTE: looks like the only answer is a sideways solution -- you have to use the XmlWriter instead of the XmlTextWriter


of course, moments after asking, I find a clue on MSDN (that I couldn't find via google) that refers to XmlWriterSettings.NewLineChars

which then led me to the unaccepted answer on SO: Writing XMLDocument to file with specific newline character (c#)

It's all in the terminology.....


Use the XmlWriterSettings to set what you want as your end of line char.

XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.NewLineChars = "\r";

XmlWriter writer = XmlWriter.Create(
                         new StreamWriter(@"c:\temp\hello.xml", mySettings);

I don't know where end of line characters would matter. I haven't run into it before.


What line ending is used should not matter to a properly implemented parser (see the spec), I quote (emphasis mine):

To simplify the tasks of applications, the XML processor must behave as if it normalized all line breaks in external parsed entities (including the document entity) on input, before parsing, by translating both the two-character sequence #xD #xA and any #xD that is not followed by #xA to a single #xA character.

Therefore, you should be fine with the way you have it right now. You might want to ask what the client vendor is actually doing there, chances are that they are Doing it Wrong.


Use the XmlWriterSettings.NewLineChars property.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜