我正在通过XmlTextWriter生成XML。
该文件看起来很好,验证(at wc3),并被客户接受。
但客户供应商抱怨行结尾是CRLF,而不仅仅是CR。
好吧,我在使用C#的Win32机器上,而CRLF是Win32标准的行结束。 有没有办法改变XmlTextWriter中的行结尾?
此外 - 对于正确的XML解析器,行结尾不应该无关紧要吗?
另见:What are carriage return, linefeed, and form feed?
注意:看起来唯一的答案是横向解决方案 - 您必须使用XmlWriter而不是XmlTextWriter
答案 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属性。