【发布时间】:2021-02-16 05:33:38
【问题描述】:
我有一个 xml 文件,并且我想制作成一个对象的数据集被另一个标签封装,所以当我尝试解析它时,它当然会抛出一个 InvalidOperationException,由于意外的成员。
我已经尝试阅读各种关于 xml 的 MS Docs,以及在谷歌上搜索我的问题,但我找不到如何在没有太多麻烦的情况下解决它。
我的代码:
public static ClassToDeserialize GetObjectFromXml (string path)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ClassToDeserialize));
System.IO.FileStream file = System.IO.File.OpenRead(path);
ClassToDeserialize loadedObjectXml = xmlSerializer.Deserialize(file) as ClassToDeserialize;
return loadedLicenseXml;
}
那么我怎么能告诉这个程序只从特定标签开始反序列化,因为它包含对象的相关 xml 数据?
【问题讨论】:
-
恕我直言,您应该使用
XmlReader打开您的 XML 文件,然后遍历所有标签,直到找到您想要的标签。然后您可以使用相同的XmlReader反序列化您想要的数据,或者只从该节点获取OuterXml并使用XmlSerializer反序列化它 -
使用 XML Reader 然后你可以 readto 方法来获取你需要的标签: System.Xml.XmlReader reader = System.Xml.Create(file); reader.ReadToFollowing(tag);xmlSerializer.Deserialize(reader)
标签: c# xml deserialization xml-deserialization