如何在CR中生成XML,而不是在XmlTextWriter中生成CRLF

时间:2010-08-05 13:48:46

标签: c# xml newline xmltextwriter

我正在通过XmlTextWriter生成XML。

该文件看起来很好,验证(at wc3),并被客户接受。

但客户供应商抱怨行结尾是CRLF,而不仅仅是CR。

好吧,我在使用C#的Win32机器上,而CRLF是Win32标准的行结束。 有没有办法改变XmlTextWriter中的行结尾?

此外 - 对于正确的XML解析器,行结尾不应该无关紧要吗?

另见:What are carriage return, linefeed, and form feed?

注意:看起来唯一的答案是横向解决方案 - 您必须使用XmlWriter而不是XmlTextWriter

4 个答案:

答案 0 :(得分:6)

当然,在询问后的那一刻,我发现MSDN上的线索(我无法通过谷歌找到)引用XmlWriterSettings.NewLineChars

然后导致我在SO: Writing XMLDocument to file with specific newline character (c#)

上找到了不可接受的答案

这一切都在术语中.....

答案 1 :(得分:5)

使用XmlWriterSettings设置您想要的行尾char。

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

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

我不知道行尾字符的位置。我以前没碰过它。

答案 2 :(得分:1)

使用什么行结尾对于正确实现的解析器无关紧要(参见the spec),我引用(强调我的):

  

为了简化应用程序的任务,   XML处理器必须表现得像它一样   在外部标准化所有换行符   解析实体(包括   文件实体)在输入之前   解析,翻译两者   双字符序列#xD #xA和任何#xD   #xA后面没有单个#xA字符。

因此,你应该对你现在拥有的方式感觉良好。您可能想问一下客户端供应商实际上在做什么,可能他们做错了。

答案 3 :(得分:0)

使用XmlWriterSettings.NewLineChars属性。