2010-11-18 7 views
4

J'ai un comportement étrange avec XElement. Il semble que la propriété Value change l'expression de la nouvelle ligne \ r \ n en unix like expression \ n. Pourquoi donc?Pourquoi la propriété XElement Value est-elle en train de changer 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 

Merci!

Répondre

1

Je crois que c'est par conception - XML ​​stocke une nouvelle ligne comme LF, et non comme Windows CR + LF.

Si vous y réfléchissez, cela est conforme au principe selon lequel XML ne conserve pas les caractères blancs sauf si vous avez xml:space="preserve". Essayez d'ajouter cela en tant qu'attribut de noeud et voyez ce que vous obtiendrez.

+0

Vous avez raison, c'est par conception en XML: http://www.w3schools.com/Xml/xml_syntax.asp. J'ai aussi essayé d'utiliser LoadOptions.PreserveWhitespace avec la méthode Parse mais j'ai le même comportement. Merci beaucoup! – pcius

+0

aussi, essayez de l'ajouter dans XML comme abc \ r \ ndef et voir si cela aide – veljkoz

Questions connexes