Je veux lire un fichier de données XML et en extraire des informations pour afficher dans un formulaire dans un environnement C# .Net vs2008 env. Je ne peux pas lire ces données dans une liste en mémoire, mais je veux avoir un fichier .exe du projet qui peut fonctionner dans un autre système informatique. Donc je pense, je ne peux pas utiliser la base de données pour enregistrer et récupérer des données! S'il vous plaît aidez-moi à résoudre mon problème!Lire grand fichier XML et extraire ses données dans une application de formulaire dans le projet C# .Net
Répondre
Récemment, Microsoft a fourni une classe de synidcation dans WCF. vous pouvez l'utiliser pour effectuer cette tâche
Utilisez System.Xml.XmlReader pour lire le fichier XML. C'est un lecteur uniquement en aval qui ne charge qu'un peu de XML à la fois.
Combinez cela avec une méthode iterator qui produit un IEnumerable, comme cet exemple, où MyXmlData est une classe qui représente ce qui se tient dans le fichier XML et une classe que vos formulaires peuvent travailler avec:
public IEnumerable<MyXmlData> QueryFile(String xmlFile)
{
using (var reader = XmlReader.Create(xmlFile))
{
// These are the variables you want to read for each 'object' in the
// xml file.
var prop1 = String.Empty;
var prop2 = 0;
var prop3 = DateTime.Today;
while (reader.Read())
{
// Here you'll have to read an xml node at a time.
// As you read, assign appropriate values to the variables
// declared above.
if (/* Have we finished reading an item? */)
{
// Once you've completed reading xml representing a single
// MyXmlData object, return it using yield return.
yield return new MyXmlData(prop1, prop2, prop3);
}
}
}
}
La valeur renvoyée par cette méthode est une séquence d'objets MyXmlData où chacun sera créé à la demande lors de la lecture du fichier, un à la fois. Cela réduira considérablement les besoins en mémoire pour un fichier XML volumineux.
Vous pouvez ensuite interroger vos objets MyXmlData à l'aide des fonctions Linq. Par exemple, vous pouvez émuler la pagination en utilisant les méthodes Take et Skip.
// Third page - 50 objects per page.
QueryFile(@"x.xml").Skip(100).Take(50);
+1. C'est une excellente stratégie pour de nombreux types de fichiers, y compris .CSV. J'ai une version modifiée de ce modèle où je crée une classe proxy privée appelée "MyXmlDataWithProgress" qui hérite de MyXmlData et inclut une propriété "Progress". Pour tirer parti de cela, vous devrez ouvrir le fichier en tant que FileStream et transmettre ce flux à la méthode XmlReader.Create(). Ensuite, vous pouvez écrire quelque chose comme "rendement retour nouveau MyXmlDataWithProgress (prop1, prop2, prop3, stream.Position/stream.Length)" –
Vous devriez regarder dans VTD-XML, il est l'analyseur XML le plus efficace en termes d'utilisation de la mémoire sans perdre l'accès aléatoire et XPath ..
- 1. Lire le fichier XML d'ADO (VB6) dans .Net DataSet
- 2. Lire un fichier xml/l'incorporer dans un projet - C#
- 3. Lire le contenu d'un fichier XML dans une vue de grille de données
- 4. Extraire Android .apk et lire le contenu du fichier XML dans res/layout
- 5. C# Lire le fichier et extraire des lignes spécifiques
- 6. Lire un fichier texte dans un projet .NET
- 7. Quel est le plus grand fichier XML que SSIS peut extraire des données?
- 8. Comment charger un fichier xml et le lire dans Silverlight?
- 9. Blackberry lire le fichier de propriétés local dans le projet
- 10. Manière efficace de lire le fichier d'index dans .NET
- 11. Correction d'encodage dans un grand Xml fichier
- 12. Lire noeud XMLDocument sans lire ses nœuds enfants en C#
- 13. Lire un fichier XML avec .NET
- 14. Lire XML à partir de Sproc et écrire dans le fichier
- 15. C# Lire et convertir le fichier dbf en xml
- 16. C principal() dans un grand projet POO
- 17. Pour lire le fichier XML dans Android
- 18. Comment extraire des données d'un fichier XML
- 19. Formulaire SqlConnectionStringBuilder dans .net C#
- 20. Lire les données du fichier xml
- 21. Lire le fichier XML plus rapidement dans ASP.NET
- 22. Montrer un fichier XML dans un formulaire avec C#
- 23. Exécution d'un fichier jar dans une application C# dot net
- 24. Incorporation de données dans une application C++
- 25. Suggestions pour lire les données d'Excel dans .net C#
- 26. C++ Lire le fichier dans hash_map
- 27. Lire un fichier XML et stocker des données dans la base de données mysql
- 28. Le fichier 'LibrarySystem.ctrlSeparator' recherché dans C# .Net
- 29. comment lire le fichier csv dans le jeu de données?
- 30. extraire les données du site et mettre dans un fichier
Je ne sais pas, je comprends votre question. Mais voici comment je l'ai lu: Vous voulez extraire des données d'un grand fichier xml et vous ne pouvez pas charger le fichier entier en mémoire. Correct? –
Veuillez reformuler la question sous une forme plus compréhensible. –
Vous ne savez pas pourquoi vous voulez avoir un fichier .exe séparé pour faire le travail quand vous pourriez avoir un projet auquel vous accédez via WCF qui fait le travail sur le serveur ... La solution semble beaucoup plus facile. – shookdiesel