带有LineBreaks的C#Xml节点InnerText - 如何编写和读取

时间:2015-12-29 11:33:16

标签: c# xml linefeed

我想使用c#中的XmlDocument对象在xml节点中存储带换行符的备忘录文本。我可以用简单的内部文本分配来编写它。

看起来如下

<CSScript>
    Line 1
    ...
    ...
    Line n
</CSScript>

但是,我无法阅读,怎么去呢?

1 个答案:

答案 0 :(得分:1)

查看PreserveWhitespace属性。在.Load() XML数据之前,将其设置为true,如下所示:

string filename = "C:\\myxml.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(filename);

同样,在调用.Save()之前,将其设置为true:

xmlDoc.SomethingNode.InnerText = "Line 1\r\n...\r\n....";
xmlDoc.PreserveWhitespace = true; // assuming it hasn't already been set to true
xmlDoc.Save(someFileLocation);

请注意,并非所有XML处理器/查看器都会遵循此行为 - 它们可能最终会将其(可能是错误的)视为无关紧要的空白并将其剥离,具体取决于文档的结构(例如,MSIE可能会执行此操作)如果您打开文档以在浏览器中查看它,但实际上没有更改文本源)。另请注意,如果您使用LINQ to XML,则可以使用LoadOptions.PreserveWhitespaceSaveOptions.DisableFormatting来达到类似效果。