2010-08-20 2 views
2

У меня есть много (15-20) разных XML-файлов, которые мне нужно загрузить в VB.Net. Они разработаны так, как они были бы в базе данных; они предназначены для доступа и массового экспорта в файлы XML. Каждый файл представляет собой другую таблицу в базе данных.Загрузка XML-файлов в структуры VB.Net

Теперь мне нужно загрузить эту информацию в VB.Net. Первоначально я хотел бы использовать DAO и напрямую обращаться к MDB через запросы, но это будет невозможно, так как я уверен, что проект будет легко перенесен на XNA/C# по дороге. (Xbox 360 не может использовать MDB, поэтому я бы скорее справился с этой проблемой сейчас, чем по дороге).

Итак, я застрял, пытаясь понять, как объединить все эти XML-файлы вместе. Я пробовал использовать Фабрики для индивидуального анализа каждого из них. Например, если три файла XML содержат данные для класса «символ», я передал бы экземпляр символа на каждый завод XML, и классы применили бы необходимые данные.

Я пытаюсь пройти мимо этого, так как сохранение многих разных классов с избыточным кодом - это боль. плюс его также сложно отлаживать. Поэтому я пытаюсь найти новое решение.

Единственное, что я могу сейчас подумать, это использовать System.Reflection, где я анализирую каждый член класса/структуры, который я создаю, а затем используя имена этих членов для чтения в данных из этого элемент XML-файла.

Однако это делает предположение, что каждый член структуры/класса имеет соответствующий элемент в файле XML и наоборот.

+1

Вы форсируете интерфейс XML только потому, что хотите сохранить переносимость? Это значит, что реляционная база данных API будет более переносимой, чем любое решение, связанное с преречением, в конечном итоге ... – Tahbaza

+0

Вы делаете все сложнее, как сейчас, так и когда вы хотите мигрировать. Просто войдите в MDB. Выполнение этого в C# почти точно такое же, как VB.NET. – David

+1

Я хочу поддерживать переносимость с помощью XNA/C#. Невозможно получить доступ к файлам MDB или использовать файлы MDB для развертываемых проектов в XBox360. Я бы предпочел придумать систему, которая работает для нескольких платформ, а не только для одного, и мне придется повторно выполнить программу позже, когда я ее портирую. –

ответ

2

Linq-to-XML - хорошее решение (и even better in VB.NET с такими вещами, как XML Literals и Global Namespaces). Обработка нескольких файлов XML в виде таблиц БД может быть грубой дорогой несколько раз, но, конечно, не невозможной. Думаю, я бы начал с JOIN (хотя в заголовке есть «C#», образцы также находятся в VB).

1

Если вы знаете схему XML-файлов, вы можете создать классы .NET, которые могут десериализовать один из этих файлов XML в экземпляр объекта .NET.

Вы также можете использовать xsd.exe (поставляется с загрузкой Windows SDK) для создания определения класса .NET для вас, если у вас есть XSD-файл (или можете написать XSD проще, чем вы можете написать сериализуемый класс .NET).

Смежные вопросы