假设我有下面的代码,其中
xmlElement.AddAfterSelf(XElement.Parse(sbXml.ToString()));
xmlElement:和包含父标记的XElement
sbXml:StringBuilder,其xml字符串类似于此<Child name='Hi'></Child>
(未转义的特殊字符或xml实体,但是有效的xml)
XElement.Parse
是否确保对特殊字符进行正确编码,这样当我XDocument.Save
时,我不会遇到异常?
答案 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
包含需要转义的某些字符(例如<
或&
),则Save
或ToString
方法会对此进行处理。