【问题标题】:Loading XML Files into VB.Net Structures将 XML 文件加载到 VB.Net 结构中
【发布时间】: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


【解决方案1】:

Linq-to-XML 是一个很好的解决方案(even better in VB.NET 与 XML Literals 和 Global Namespaces 类似)。有时将多个 XML 文件视为 DB 表可能是一条艰难的道路,但肯定不是不可能的。我想我会从JOIN 开始(尽管标题中有“C#”,但示例也在 VB 中)..

【讨论】:

    【解决方案2】:

    如果您知道 XML 文件的架构 - 您可以创建 .NET 类,将这些 XML 文件之一反序列化为 .NET 对象的实例。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多