Question

J'ai ce fichier exporté dans un format étrange (standard pour cette industrie!), que je dois importer dans notre base de données. Le fichier ressemble en gros à ceci:

DATRKAKT-START
  KAKT_LKZ  "D"
  KAKT_DAT_STAMM    "1042665"

  DATRKAIB-START
    KAIB_AZ "18831025"
    KAIB_STATUS_FM  2
    KAIB_KZ_WAE "E"
  DATRKAIB-END

  DATRKARP-START
    KARP_MELD   "831025"
    KARP_ST_MELD    "G"
  DATRKARP-END

...
DATRKAKT-END

Il y a 56 sections avec un total de 1963 rangées différentes, donc je ne suis vraiment pas dans création de 56 classes avec 1963 propriétés ... Comment manipuleriez-vous ce fichier? afin que vous puissiez accéder à certaines propriétés comme si c'était un objet?

Datrkaib.Kaib_Status_Fm
Datrkarp.karp_St_Meld
Était-ce utile?

La solution

À moins que votre langage de programmation ne vous permette d'ajouter des méthodes à des classes lors de l'exécution ou que les classes ne répondent à des appels de méthodes non définies, vous ne pourrez le faire. Le fait est que même si C # vous permettait de le faire, vous perdriez de toute façon la sécurité de type et l’aide d’Intellisense (vraisemblablement parmi les raisons pour lesquelles il souhaite que cela fonctionne ainsi), alors pourquoi ne pas simplement aller de l'avant et le lire dans une structure de données? Mon inclination serait un hachage pouvant contenir des valeurs ou d’autres hachages. Vous obtiendrez ainsi des appels tels que (VB):

Datrkakt("Lkz")
Datrkakt("Dat_Stam")
Datrkakt("Kaib")("Az")
Datrkakt("Kaib")("Status_Fm")

Ou, si vous savez que tous les éléments de données sont nommés de manière unique, comme dans votre exemple, utilisez un seul hachage:

Datr("Kakt_Lkz")
Datr("Kakt_Dat_Stam")
Datr("Kaib_Az")
Datr("Kaib_Status_Fm")

Vous pouvez récupérer l'aide d'Intellisense en créant une énumération de tous les noms d'éléments de données et en obtenant:

Datr(DatrItem.KAKT_LKZ)
Datr(DatrIrem.KAIB_STATUS_FM)

Autres conseils

Cela ressemble à des données structurées - je lancerais une recherche, remplacerais et convertirais en un simple xml. puis importez.

Si vous souhaitez générer un fichier de code, considérez codesmith - je pense que c'est possible. fais ça.

Je choisirais une liste <name, list> d'objets divers, pouvant être un tuple <name, value> ou une liste d'objets nommée.

Il n'y en a pas qui le fera automatiquement pour vous.

Je créerais une classe contenant toutes les propriétés appropriées (par exemple, DatrDocument) et créerais une classe DatrReader (idée similaire aux classes XmlDocument / XmlReader).

DatrReader devra lire le contenu du fichier ou du flux et l'analyser dans un document DatrDocument.

Vous pouvez également écrire une classe DatrWriter qui prendra un document DatrDocument et l'écrivera dans un flux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top