代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Kern

将XML文件加载到VB.NET结构中

  •  2
  • Jeffrey Kern  · 技术社区  · 14 年前

    我有许多(15-20)不同的XML文件需要加载到vb.net。它们的设计就像在数据库中一样;它们是在Access中设计的,并批量导出到XML文件中。 每个文件表示数据库中的不同表。

    现在,我需要将这些信息加载到vb.net中。最初,我希望使用DAO并通过查询直接访问MDB,但这是不可能的,因为我要确保项目可以很容易地移植到 XNA/C沿路行驶 . (Xbox360不能使用mdb,所以我宁愿现在就解决这个问题,也不愿意走在路上)。

    所以,我现在一直在努力找出如何将所有这些XML文件放在一起。我试过用工厂分别分析每个工厂。例如,如果三个XML文件包含“character”类的数据,我将向每个XML工厂传递一个character实例,这些类将应用必要的数据。

    不过,我正努力克服这一点,因为用冗余代码维护许多不同的类是一件痛苦的事情。另外,调试也很困难。所以我想找出一个新的解决方案。

    我现在唯一能想到的就是使用System.Reflection,在这里我解析正在实例化的类/结构的每个成员,然后使用这些成员的名称从XML文件的该元素中读取数据。

    然而,这使得假设结构/类的每个成员在XML文件中都有一个匹配的元素,反之亦然。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Stan    14 年前

    Linq-to-XML 是一个很好的解决方案 even better in VB.NET 例如XML文本和全局命名空间)。将多个XML文件视为DB表有时可能是一条艰难的道路,但肯定不是不可能的。我想我应该从 JOIN (尽管标题中有“c”,但样本也在vb中)。

        2
  •  1
  •   Adam    14 年前

    如果知道XML文件的架构,可以创建.NET类,将其中一个XML文件反序列化为.NET对象的实例。

    如果您有XSD文件,也可以使用xsd.exe(随Windows SDK下载提供)为您生成.NET类定义(或者编写XSD比编写可序列化的.NET类容易)。