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

£可爱£侵袭症+ 提交于 2019-12-02 01:07:07

问题


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:


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




回答2:


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.




回答3:


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.




回答4:


Use the XmlWriterSettings.NewLineChars property.



来源:https://stackoverflow.com/questions/3415294/how-can-i-generate-xml-with-cr-instead-of-crlf-in-xmltextwriter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!