.net – LINQ to XML忽略属性中的换行符
发布时间:2020-12-16 23:48:05 所属栏目:百科 来源:网络整理
导读:根据这个问题: Are line breaks in XML attribute values allowed? XML属性中的换行符完全有效(尽管可能不推荐): xmltag1 xmltag2 attrib="line 1line 2line 3" /xmltag2/xmltag1 当我使用LINQ to XML(System.Xml.Linq)解析这样的XML时,这些换行符将被静默
根据这个问题:
Are line breaks in XML attribute values allowed? XML属性中的换行符完全有效(尽管可能不推荐): <xmltag1> <xmltag2 attrib="line 1 line 2 line 3"> </xmltag2> </xmltag1> 当我使用LINQ to XML(System.Xml.Linq)解析这样的XML时,这些换行符将被静默转换为空格”字符. 有没有办法告诉XDocument.Load()解析器保留这些换行符? P.S.:我正在解析的XML是由第三方软件编写的,因此我无法改变换行符的写入方式.
如果你想要保留属性值中的换行符,那么你需要用字符引用来写它们,例如
<foo bar="Line 1. Line 2. Line3."/> 另外,根据XML规范http://www.w3.org/TR/xml/#AVNormalize,XML解析器将它们规范化为空格. [edit]如果要避免属性值规范化,那么使用旧版XmlTextReader加载XML有助于: string testXml = @"<foo bar=""Line 1. Line 2. Line 3.""/>"; XDocument test; using (XmlTextReader xtr = new XmlTextReader(new StringReader(testXml))) { xtr.Normalization = false; test = XDocument.Load(xtr); } Console.WriteLine("|{0}|",test.Root.Attribute("bar").Value); 那输出 |Line 1. Line 2. Line 3.| (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |