我非常轻松和舒适地使用XDocument和LINQ,但是 出现了一个问题:
当您尝试输出xml时, XDocument 删除属性内的新行。
另一方面,XmlDocument 保留新行。
static void Main(string[] args)
{
string res;
string str = "<element attrib='Some text \n with new line'/>";
XDocument xDoc = XDocument.Parse(str);
res = xDoc.ToString();
//res dose not containe the new line.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(str);
res = xmlDoc.OuterXml;
//res contains a new line char, that i can replace to something more nice like /r.
res = res.Replace("
", Environment.NewLine);
}
我已经使用XDocument编写了很多代码,并且不想使用XmlDocument重写它。如何让XDocument以这种方式表现得像XmlDocument?
答案 0 :(得分:0)
根据XML规范,解析文档时属性值为normalized。规范化将使用空白字符(#x20
)替换属性值中的所有换行符。请注意,这种规范化在您创建XDocument
时已经发生,而不是在您将其写回文件时发生,并且它完全符合XML规范。
如果您想保留换行符,可以在输入中将换行符编码为

:
var inputXml = "<element attrib='Some text 
 with new line'/>";
var xDoc = XDocument.Parse(inputXml);
var attribValue = (string)xDoc.Root.Attribute("attrib");