2009-06-02 8 views
0

J'essaie de créer une application VB.net qui lit chaque ligne d'un fichier XML (ou fichier ini, peu importe) qui dicte quel devrait être le nom d'une chaîne.Comment lire chaque ligne XML dans des chaînes spécifiées?

par exemple

"string1 = xml.line1" 
"string2 = xml.line2" 

etc

Quelle serait la meilleure approche de le faire? J'ai déjà plumé un peu avec Xml.XmlTextReader et ça semble faire l'affaire, mais je n'arrive pas à décomposer chaque ligne comme c'est sa propre chaîne?

Répondre

0

Si vous avez affaire à la ligne XML en ligne et que vous voulez ignorer la sémantique XML, vous devez le traiter comme un fichier texte brut et exécuter une expression régulière ou quelque chose sur chaque ligne:

Dim lines = File.GetAllLines("file.xml") 
' Check the lines (which is a String array) for the criteria 
1

Une ligne est rarement un concept utile dans un document XML. Par exemple:

<foo> 
    <bar first="x" 
     second="y" /> 
</foo> 

équivaut à

<foo> 
    <bar first="x" second="y" /> 
</foo> 

Normalement, vous souhaitez interroger un document XML pour les différents éléments plutôt que des lignes. Une ligne serait beaucoup plus sensible dans un fichier .ini, cependant.

Quelle est la taille d'image supérieure? Qu'essayez-vous d'accomplir?

Si vous avez besoin de lire toutes les lignes d'un fichier texte (mais vous n'avez pas besoin tous en mémoire à la fois), je vous recommande d'utiliser File.OpenText qui retourne un TextReader, puis en appelant ReadLine() et le traitement des chaînes de caractères que vous allez jusqu'à ce que la ligne renvoyée soit Nothing (ce qui signifie que vous avez atteint la fin du fichier). N'oubliez pas d'enrouler le lecteur dans une instruction Using.

EDIT: Si vous n'avez pas besoin d'autre chose dans le fichier, alors je écrirais juste une entrée par ligne et vous avez terminé. D'un autre côté, cela signifie que si vous avez besoin d'autres informations de configuration, vous devrez tout changer.

L'utilisation d'un fichier ini serait assez simple, mais il faudrait écrire le code pour l'analyser. (Il peut y avoir des bibliothèques tierces pour le faire pour vous, certes, j'en ai écrit une dans une société précédente, et cela n'a pas pris très longtemps.)

L'utilisation d'un fichier XML introduirait un peu plus de "fluff" autour des valeurs, mais il serait assez simple à lire, en particulier si vous utilisez .NET 3.5 et LINQ to XML. Par exemple, vous pourriez avoir un fichier comme celui-ci:

<Configuration> 
    <RegistryEntries> 
     <RegistryEntry>First</RegistryEntry> 
     <RegistryEntry>Second</RegistryEntry> 
     <RegistryEntry>Third</RegistryEntry> 
    </RegistryEntries> 
</Configuration> 

et obtenir la séquence d'entrées juste en faisant:

document.Root.Element("RegistryEntries") 
      .Elements("RegistryEntry") 
      .Select(e => e.Value); 

Comme encore une autre alternative, vous pouvez utiliser la configuration/paramètres intégrés caractéristiques de .NET. Avez-vous essayé d'utiliser la partie "Paramètres" des propriétés du projet?

+0

Les valeurs de ces lignes doivent représenter le nom d'une entrée de registre. Par exemple, nom, email etc. Et je ne veux pas hardcore les noms des entrées de registre au cas où ils changeraient.Peut-être que lire à partir d'un fichier ini serait mieux, même un fichier texte pourrait fonctionner. :) –

Questions connexes