2010-11-18 44 views
4

我有一个奇怪的行为与XElement。看起来Value属性将新行表达式\ r \ n更改为unix像表达式\ n。这是为什么?为什么XElement Value属性将 r n更改为 n?

string valueString = "abc\r\ndef"; 
string xmlString = "<desc>abc\r\ndef</desc>"; 
XElement xElement = XElement.Parse(xmlString); 

string toString = xElement.ToString(); //as expected same value as xmlString 
string xElementValue = xElement.Value; //contains abc\ndef instead of abc\r\ndef 

谢谢!

回答

1

我相信这是通过设计 - XML将新行存储为LF,而不是将Windows存储为Windows CR + LF。

如果您仔细考虑它,它与XML不会保留白色字符的原则一致,除非您有xml:space="preserve"。尝试添加它作为节点属性,并看看你会得到什么。

+0

你对它的设计在xml:http://www.w3schools.com/Xml/xml_syntax.asp。此外,我尝试使用Parse方法使用LoadOptions.PreserveWhitespace,但我得到相同的行为。非常感谢! – pcius 2010-11-18 22:55:14

+0

也可以尝试在XML内添加它,如 abc \ r \ ndef,看看它是否有帮助 – veljkoz 2010-11-19 08:49:41

相关问题