У меня есть XML-лист, который содержит некоторый специальный символ «& это спецвыпуски характер вызывает» и я использую ниже код для десериализации XMLXML десериализации со специальными символами в C# XMLSerializer
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();
и structre моего XML Типовой, как это
[XmlRoot(ElementName = "XMLDATAMODEL")]
public class XMLDATAMODEL
{
[XmlElement(ElementName = "EventName")]
public string EventName { get; set; }
[XmlElement(ElementName = "Location")]
public string Location { get; set; }
}
я попробовал этот код, а также с указанным Encoding, но без успеха
// 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, он выглядит работающим. Как я могу заставить его работать с данными xml без CData?
Вот мое содержимое файла XML
И ошибка я получаю Существует ошибка в документе XML (2, 17).
Какой особый символ заставляет его потерпеть неудачу? Например, '<' во внутреннем тексте? – Ian
NO & вызывает проблемы –
Вы должны быть сущ. Кодировкой амперсандов в исходных данных. –