我需要将许多(15-20)个不同的XML文件加载到VB.Net。它们的设计与数据库中的设计相同;它们在Access中设计并批量导出到XML文件中。 每个文件代表数据库中的不同表。
现在,我需要将此信息加载到VB.Net中。最初,我喜欢使用DAO并通过查询直接访问MDB,但这是不可能的,因为我确保项目很容易移植到 XNA / C#的路上 。 (Xbox 360不能使用MDB,所以我现在更愿意处理这个问题而不是在路上)。
所以,我现在陷入困境,试图弄清楚如何将所有这些XML文件拼凑在一起。我尝试过使用工厂分别解析每个工厂。例如,如果三个XML文件包含“字符”类的数据,我会将一个Character实例传递给每个XML工厂,并且这些类将应用必要的数据。
我试图通过这个,因为使用冗余代码维护许多不同的类是一件痛苦的事。加上它也很难调试。所以我想找到一个新的解决方案。
我现在唯一能想到的是使用System.Reflection,我在其中解析我正在实例化的类/结构的每个成员,然后使用这些成员的名称来读取该元素的数据的XML文件。
但是,这假设结构/类的每个成员在XML文件中都有匹配元素,反之亦然。
答案 0 :(得分:2)
Linq-to-XML是一个很好的解决方案(even better in VB.NET包含XML Literals和Global Namespaces等。将多个XML文件作为数据库表处理有时可能是一条艰难的道路,但肯定不是不可能的。我想我会从JOIN开始(即使它在标题中有“C#”,样本也在VB中)..
答案 1 :(得分:1)
如果您知道XML文件的架构 - 您可以创建.NET类,可以将其中一个XML文件反序列化为.NET对象的实例。
如果您有XSD文件(或者可以编写XSD比编写可序列化的.NET类更容易),您还可以使用xsd.exe(Windows SDK下载附带)为您生成.NET类定义