Десериализация XML с внутреннего узла XML
Я работаю над сериализацией / десериализацией моего объекта.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
,
Я знаю, что есть простое решение, но я не могу его найти.
1 ответ
Решение
Измените это на
xformatter.Deserialize(xmlReader.ReadSubTree());