如何让XDocument.Load保留换行符

4
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 converts

a

b

to

a b

如何保留我的换行?

1个回答

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"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接