Приветствую.
Есть входящая XML, которую я успешно десеарилизую:
var xs = new XmlReaderSettings
{
IgnoreWhitespace = true,
ConformanceLevel = ConformanceLevel.Fragment,
//ProhibitDtd = false,
DtdProcessing = DtdProcessing.Parse
};
var xr = XmlReader.Create(new System.IO.StringReader(data), xs);
var client = (XmlClient.Client)new XmlSerializer(typeof(XmlClient.Client)).Deserialize(xr);
Входящая XML может не иметь некоторых атрибутов и это успешно обрабатывается Deserialize, который оставляет эти пол null в созданном объекте client.
Проблема в том, что если наоборот, XML имеет атрибуты не описанные в XmlClient.Client, то мне никто ничего не говорит.
Как заставить это дело кидать ошибки в этом случае? В XmlReaderSettings не нашёл такой конфигурации или плохо искал?
Здравствуйте, Real 3L0, Вы писали:
R3>Приветствую.
R3>Есть входящая XML, которую я успешно десеарилизую:
R3>R3>var xs = new XmlReaderSettings
R3>{
R3> IgnoreWhitespace = true,
R3> ConformanceLevel = ConformanceLevel.Fragment,
R3> //ProhibitDtd = false,
R3> DtdProcessing = DtdProcessing.Parse
R3>};
R3>var xr = XmlReader.Create(new System.IO.StringReader(data), xs);
R3>var client = (XmlClient.Client)new XmlSerializer(typeof(XmlClient.Client)).Deserialize(xr);
R3>
R3>Входящая XML может не иметь некоторых атрибутов и это успешно обрабатывается Deserialize, который оставляет эти пол null в созданном объекте client.
R3>Проблема в том, что если наоборот, XML имеет атрибуты не описанные в XmlClient.Client, то мне никто ничего не говорит.
R3>Как заставить это дело кидать ошибки в этом случае? В XmlReaderSettings не нашёл такой конфигурации или плохо искал?
xmlvalidatingreader
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Здравствуйте, Real 3L0, Вы писали:
R3>Как заставить это дело кидать ошибки в этом случае? В XmlReaderSettings не нашёл такой конфигурации или плохо искал?
UnknownElement, UnknownAttribute:
var serializer = new XmlSerializer(typeof(XmlClient.Client));
serializer.UnknownElement += (sender, e) => {
...
};
serializer.UnknownAttribute += (sender, e) =>
{
....
};
Здравствуйте, bnk, Вы писали:
bnk>UnknownElement, UnknownAttribute:
Отлично! То что надо, без оверхеда со схемами.