1

我正在努力让我的 .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.

我知道有一个简单的解决方案,但我找不到它。

4

1 回答 1

3

将其更改为

xformatter.Deserialize(xmlReader.ReadSubTree());
于 2010-08-11T15:21:08.037 回答