XElement.Parse是否会转义特殊字符

时间:2014-10-30 13:25:23

标签: linq-to-xml xelement

假设我有下面的代码,其中

            xmlElement.AddAfterSelf(XElement.Parse(sbXml.ToString()));
  • xmlElement:和包含父标记的XElement

  • sbXml:StringBuilder,其xml字符串类似于此<Child name='Hi'></Child>(未转义的特殊字符或xml实体,但是有效的xml)

XElement.Parse是否确保对特殊字符进行正确编码,这样当我XDocument.Save时,我不会遇到异常?

1 个答案:

答案 0 :(得分:1)

XDocument.Load/Parse以及XElement.Load/Parse使用XML解析器(在.NET框架中是XmlReader的具体子类),当然这样它需要格式良好的XML作为输入。使用字符串连接来构造XML不是.NET框架中的正确方法,因为有类似XmlWriter的类,当然还有基于树的LINQ to XML或DOM实现,它们允许您构造XML并确保任何已保存的,序列化表示是格式良好的XML(或者在构造和序列化树时会收到指示问题的错误)。因此,不要使用字符串连接,而是使用XmlWriter或LINQ to XML构建XML,例如使用new XElement("child", new XAttribute("name", childEntity.Name))。这样,如果childEntity.Name包含需要转义的某些字符(例如<&),则SaveToString方法会对此进行处理。