4

我正在通过 XmlTextWriter 生成 XML。

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

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

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

另外——对于适当的 XML 解析器,行尾不应该是无关紧要的吗?

另请参阅:什么是回车、换行和换页?

注意:看起来唯一的答案是一个侧面的解决方案——你必须使用 XmlWriter 而不是 XmlTextWriter

4

4 回答 4

6

当然,询问后不久,我在 MSDN 上找到了一条线索(我无法通过谷歌找到),它指的是XmlWriterSettings.NewLineChars

然后让我得到了关于SO 的不被接受的答案:Writing XMLDocument to file with specific newline character (c#)

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

于 2010-08-05T13:56:09.370 回答
5

使用 XmlWriterSettings 将您想要的内容设置为行尾字符。

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

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

我不知道行尾字符在哪里很重要。我以前没有遇到过。

于 2010-08-05T13:55:33.677 回答
1

使用什么行尾对于正确实现的解析器(请参阅规范)无关紧要,我引用(强调我的):

为了简化应用程序的任务,XML 处理器必须表现得好像它在解析之前通过翻译两个字符序列 #xD #xA 和任何 # xD 后面没有 #xA 到单个 #xA 字符。

因此,你应该对你现在拥有它的方式感到满意。您可能想问客户供应商实际上在做什么,他们很可能做错了。

于 2010-08-05T13:56:32.490 回答
0

使用 XmlWriterSettings.NewLineChars 属性。

于 2010-08-05T13:56:37.513 回答