【发布时间】:2010-08-20 02:46:16
【问题描述】:
我有许多 (15-20) 个不同的 XML 文件需要加载到 VB.Net。它们的设计就像在数据库中一样;它们在 Access 中设计并批量导出到 XML 文件中。 每个文件代表数据库中不同的表。
现在,我需要将此信息加载到 VB.Net 中。最初,我很想使用 DAO 并通过查询直接访问 MDB,但这不可能,因为我要确保项目可以轻松移植到 XNA/C# . (Xbox 360 不能使用 MDB,所以我宁愿现在就解决这个问题,而不是以后解决)。
所以,我现在正试图弄清楚如何将所有这些 XML 文件组合在一起。我试过使用工厂来单独解析每一个。例如,如果三个 XML 文件包含“字符”类的数据,我会将 Character 的实例传递给每个 XML 工厂,并且这些类将应用必要的数据。
不过,我正在努力克服这一点,因为使用冗余代码维护许多不同的类是一件很痛苦的事情。加上它也很难调试。所以我正在尝试找出一个新的解决方案。
我现在唯一能想到的是使用 System.Reflection,我在其中解析我正在实例化的类/结构的每个成员,然后使用这些成员的名称从该元素中读取数据XML 文件。
但是,这假设结构/类的每个成员在 XML 文件中都有一个匹配的元素,反之亦然。
【问题讨论】:
-
您强制使用 XML 接口只是因为您想保持可移植性?是这样的,关系数据库 API 将比你最终得到的任何争论的解决方案更便携......
-
无论是现在还是当您想要迁移时,您都让自己变得更加困难。只需访问 MDB。用 C# 做几乎和 VB.NET 完全一样。
-
我想保持 XNA/C# 的可移植性。在部署到 XBox360 的项目上,无法访问或使用 MDB 文件。我宁愿现在想出一个适用于多个平台的系统,而不是只适用于一个平台,以后移植时必须重做程序。
-
xbox 是否支持 LINQ to XML?
-
@Esteban 是的,Xbox 支持 LINQ to XML。我对 LINQ 的经验很少;基本上,只是基本的 WHERE 子句,它根据一个表中的一列或两列中的值选择行。
标签: vb.net reflection data-structures xml-parsing