【发布时间】:2015-12-28 08:25:33
【问题描述】:
我有一个 xml 表,其中包含一些特殊字符 “& 是导致问题的特殊字符”,我使用下面的代码来反序列化 XML
XMLDATAMODEL imported_data;
// Create an instance of the XmlSerializer specifying type and namespace.
XmlSerializer serializer = new XmlSerializer(typeof(XMLDATAMODEL));
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream(path, FileMode.Open);
XmlReader reader = XmlReader.Create(fs);
// Use the Deserialize method to restore the object's state.
imported_data = (XMLDATAMODEL)serializer.Deserialize(reader);
fs.Close();
我的 XML MOdel 的结构是这样的
[XmlRoot(ElementName = "XMLDATAMODEL")]
public class XMLDATAMODEL
{
[XmlElement(ElementName = "EventName")]
public string EventName { get; set; }
[XmlElement(ElementName = "Location")]
public string Location { get; set; }
}
我也尝试了这段代码并提到了编码,但没有成功
// Declare an object variable of the type to be deserialized.
StreamReader streamReader = new StreamReader(path, System.Text.Encoding.UTF8, true);
XmlSerializer serializer = new XmlSerializer(typeof(XMLDATAMODEL));
imported_data = (XMLDATAMODEL)serializer.Deserialize(streamReader);
streamReader.Close();
这两种方法都失败了,如果我在 Cdata 中放入特殊字符,它看起来可以正常工作。 我怎样才能让它在没有 CData 的情况下也适用于 xml 数据?
这是我的 XML 文件内容
我得到的错误是 XML 文档中存在错误 (2, 17)。
【问题讨论】:
-
什么样的特殊字符导致它失败?比如“内文”中的
<? -
NO & 导致问题
-
您应该对源数据中的 & 符号进行实体编码。
-
我明白了,我得到了更好的图片。但最好能把 XML 文件数据本身放入,因为这样更容易重现错误。
-
在这种情况下,序列化是如何完成的?
标签: c# xml xmlserializer