如何让XDocument.Load保留换行符

时间:2013-03-07 23:06:41

标签: c# .net

using (System.IO.StreamReader sr = new System.IO.StreamReader(path, System.Text.Encoding.GetEncoding("Windows-1252"), true))
{ 

    xdoc = XDocument.Load(sr);
}

这是我的XML

<sheet name="sheet1" bounds="160,128,464,288">
    <text name="text1" bounds="160,128,464,288" text="a

    b"/>
</sheet>

XDocument.Load转换

a

b

a b

如何保留我的换行符?

1 个答案:

答案 0 :(得分:5)

默认情况下,属性中的空格被规范化以转换为空格。在元素中使用新行而不是属性更安全。

如果它无法控制 - 将XmlTextReader.Normalization设置为false可以防止默认行为。

以下文章中的部分样本:

// Create the XML fragment to be parsed. 
string xmlFrag  = 
@"<item attr1='  test A B C
    1 2 3'/>
  <item attr2='&#01;'/>";                         
XmlTextReader reader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context);

// Show attribute value normalization.
reader.Read();
reader.Normalization = false;
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));
reader.Normalization = true;
Console.WriteLine("Attribute value:{0}", reader.GetAttribute("attr1"));