2010-07-08 6 views
0

Je suis en train de concevoir un catalogue de voiture et j'ai besoin d'utiliser des fichiers XML pour le stockage. Dans les projets précédents, je modifiais manuellement les fichiers XML avec Linq. Cependant, je suis tombé sur la sérialisation XML et je pense que cela pourrait être une meilleure approche. Chaque élément du catalogue est de type CarItem et contient divers attributs. Le catalogue peut contenir quelques centaines de voitures et je m'inquiète de la performance. Si je désérialise le fichier XML, tous les CarItems seront-ils immédiatement instanciés? Y a-t-il un moyen pour moi de pouvoir choisir quel objet est désérialisé en fonction des paramètres? Par exemple, je voudrais dire "si l'attribut couleur de la voiture est rouge, alors désérialiser uniquement les CarItems rouges dans les objets".XML Serialization/Deserialization par article

Merci pour toutes suggestions

+0

Salut Superexsl, Pouvez-vous clarifier avec un code comment vous avez l'intention de désérialiser? Il y a plusieurs façons d'y parvenir et la réponse peut dépendre de votre approche. –

+0

Salut les arbres. Je n'ai pas encore programmé le code de sérialisation/désérialisation, donc je suis ouvert à toute suggestion. Merci pour la réponse. – XSL

Répondre

1

Il y a pas mal de messages avec de bons exemples de la façon dont vous pouvez contrôler ce que vous extrayez et instanciez dans des objets/scalaires en utilisant XDocument.

Le message de Shawn Oster dans this thread Je crois est assez proche de ce que vous voulez en utilisant linq. Vous pouvez ajouter des clauses where pour répondre à vos besoins facilement.

+0

Cela semble devoir faire l'affaire. Merci pour l'aide! – XSL

+0

yw :)/15char .. –

1

Oui, ils seront tous instanciées. Cependant, quelques centaines d'objets ne sont pas un gros problème pour une classe avec des champs simples. Essayez-le et vérifiez les performances.

+0

Merci pour la réponse. Dans ce cas, j'espère qu'il pourrait y avoir une meilleure approche que la sérialisation/désérialisation directe pour pouvoir augmenter les performances (puisque c'est sur un appareil mobile). – XSL