xml 换行符处理 c#
XElement.ToString() 默认会把\r\n, \n转化成默认换行符(有的环境是\n,也有的环境是\r\n),若不想自动转化可以采用 NewLineHandling.None:
1 string xmlString; 2 3 var settings = new XmlWriterSettings 4 { 5 OmitXmlDeclaration = true, 6 NewLineHandling = NewLineHandling.None 7 }; 8 9 using (var sw = new StringWriter()) 10 { 11 using (var xw = XmlWriter.Create(sw, settings)) 12 { 13 node.WriteTo(xw); 14 } 15 16 xmlString = sw.ToString(); 17 }
测试代码:
转义字符:
\r:
\n:
&: &
<: <
>: >
1 public static void TestXml() 2 { 3 var str = ""; 4 5 var xDoc = XDocument.Parse(str); 6 var element = xDoc.Descendants("Element").First(); 7 var value = element.Value; 8 Console.WriteLine("1. Element plain value: {0}", value); 9 Console.WriteLine("\r\nBelow log will show \\r \\n as visible characters.\r\n"); 10 Console.WriteLine("2. Element Value: {0}", value.Replace("\r", "\\r").Replace("\n", "\\n")); 11 12 Console.WriteLine("3. Element.ToString(): {0}", element.ToString().Replace("\r", "\\r").Replace("\n", "\\n")); 13 14 var settings = new XmlWriterSettings 15 { 16 OmitXmlDeclaration = true, 17 NewLineHandling = NewLineHandling.None 18 }; 19 20 using (var sw = new StringWriter()) 21 { 22 using (var xw = XmlWriter.Create(sw, settings)) 23 { 24 element.WriteTo(xw); 25 } 26 27 var eleStr = sw.ToString(); 28 Console.WriteLine("4. Serialize with NewLineHandling.None: {0}", eleStr.Replace("\r", "\\r").Replace("\n", "\\n")); 29 } 30 } Value1a Value1b Value1c
在windows 10 上测试:
1. Element plain value: Value1a
Value1b
Value1c
Below log will show \r \n as visible characters.
2. Element Value: Value1a\nValue1b\r\nValue1c
3. Element.ToString():Value1a\r\nValue1b\r\nValue1c
4. Serialize with NewLineHandling.None:Value1a\nValue1b\r\nValue1c
Value1b
Value1c
Below log will show \r \n as visible characters.
2. Element Value: Value1a\nValue1b\r\nValue1c
3. Element.ToString():
4. Serialize with NewLineHandling.None:
原文:https://www.cnblogs.com/fancy-xt/p/15047022.html