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
如何保留我的换行符?
答案 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=''/>";
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"));