Десериализация 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());
Другие вопросы по тегам