Какова лучшая стратегия для записи моих коллекций и объектов на диск и последующего их импорта? - PullRequest
4 голосов
/ 08 марта 2011

У меня есть несколько коллекций и объектов, которые имеют отношение один-ко-многим на четыре уровня.CollectionA содержит количество CollectionB объектов, CollectionB содержит количество CollectionC объектов, а CollectionC содержит количество Content объектов.

После того, как пользователь потратил время на заполнение всех этих коллекций и объектов необходимыми данными, он должен иметь возможность сохранить все свойства каждого объекта, а затем прочитать выходной файл и начать с того места, где он остановился.,

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

Это превосходный проект, поэтому я подумал, что смогу перебрать все Коллекции и объекты сверху вниз и записать их значения в электронную таблицу, а затем перебрать строки таблицы и вывести их в текст с разделителями.файл.Затем сделайте обратное, чтобы прочитать текстовый файл обратно - из текста в электронную таблицу, затем из электронной таблицы в коллекции и объекты.

Может быть, другой вариант - обойти электронную таблицу и использовать TextStream?Возможно ли это, и будет ли так, если я планирую преобразовать это приложение VBA в автономный VB.NET когда-нибудь в будущем?

1 Ответ

4 голосов
/ 09 марта 2011

Один хороший вариант - хранить ваши коллекции в виде файлов XML. После этого будет относительно легко добавлять или читать отдельные элементы; и вы избавите себя от кошмара индексирования, который неизбежно произойдет, если вы попытаетесь разместить свои 4+-мерные данные в двумерной таблице. Это текстовые файлы, так что читаемые человеком; если размер файла становится проблемой, просто заархивируйте их.

Вам просто нужно придумать подходящий формат, то есть имена тегов и т. Д., См. Пример в конце этого ответа.

РЕДАКТИРОВАТЬ: Если для вас действительно важны данные, упакованные в вашу книгу Excel, вы можете просто скопировать код xml на один из листов и сохранить его там ... Я делал это раньше.

Создайте документ XML, как показано ниже:

Set xmlFatAssCollectionA = CreateObject("Msxml2.DOMDocument.6.0")

Затем отредактируйте его: переберите свои коллекции, добавив каждый элемент как дочерний элемент большой коллекции, в зависимости от ситуации. Когда закончите, сохраните документ XML.

xmlFatAssCollectionA.save("C:\MyDir\MyCollection.xml")

Документация: http://msdn.microsoft.com/en-us/library/ms756987%28v=VS.85%29.aspx

Вы можете использовать XPath для доступа к необходимым узлам / элементам. Учебник по XPath

Вот как может выглядеть ваш полученный XML-файл. Я добавил только один объект collectionB и пропустил весь слой collectionA, но вы поняли идею.

<?xml version="1.0" encoding="ISO-8859-1"?>

<bObject>
  <cObject>
    <contentObject>
      <title lang="da">Kejserens nye klæder</title>
      <author>H.C. Andersen</author>
      <price>priceless</price>
    </contentObject>
  </cObject>
  <cObject>
     <contentObject>
      <title lang="en">Harry Potter</title>
      <author>J K. Rowling</author>
      <year>2005</year>
      <price>29.99</price>
    </contentObject>
    <contentObject>
      <title lang="fr">Les Schtroumpfs</title>
      <author>Some person</author>
      <year>1985</year>
    </contentObject>
  </cObject>
</bObject>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...