views:

63

answers:

4

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 vendor 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

+1  A: 

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.

btlog
thanks. we were typing simultaneously!
Michael Paulukonis
+3  A: 

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.....

Michael Paulukonis
Good find on the SO article.
btlog
I accepted my own answer after a week had passed with nothing upvoted higher; I was waiting to see if something new would appear.
Michael Paulukonis
+1 deservedly so.
Tomalak
+1  A: 

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.

Tomalak
I'm with you on that one, but this was the vendor of a client, so we had no pull or push to say they had a problematic implementation.
Michael Paulukonis
A: 

Use the XmlWriterSettings.NewLineChars property.

Bob Moore