Я работаю над сериализацией / десериализацией моего объекта .NET. Как требование к нашим XML-файлам, объект должен находиться внутри главного узла с именем mycompany
. Вот пример для файла:
<?xml version="1.0" encoding="utf-8"?>
<mycompany>
<station>
<serial>VAA008090067</serial>
</station>
</mycompany>
У меня проблема с десериализацией. Я не знаю, как сказать сериализатору: «Эй, обязательно покопайся в узле mycompany
, прежде чем десериализовать».
Вот мой текущий код десериализации (без учета корневого узла):
Stream binaryStream = File.Open(Filename, FileMode.Open);
XmlSerializer xformatter = xformatter = new XmlSerializer(typeof(T));
obj = (T)xformatter->Deserialize(stream);
Я попытался сделать следующий код: создать XmlTextStream
, прочитать в узле заголовка файла и узле mycompany
, а затем передать поток в сериализатор
Stream binaryStream = File.Open(Filename, FileMode.Open);
xmlReader = gcnew XmlTextReader(binaryStream);
xmlReader.Read(); // add error checking
xmlReader.Read(); // add error checking
xformatter = gcnew XmlSerializer(T.typeid);
obj = (T)xformatter.Deserialize(xmlReader);
Выше не работает, бросает мне XmlElement error: Root element is missing
.
Я знаю, что есть простое решение, но я не могу его найти.