2008-11-11 3 views
3

J'ai écrit une application WPF que je veux porter vers Silverlight 2.XmlNode non pris en charge dans Silverlight: réimplémenter ou utiliser l'analyse de chaîne?

Ma logique métier et mon modèle (pour le motif de conception MV-VM) sont regroupés dans un ensemble distinct que je tente de refondre en Silverlight. bibliothèque de classes.

Malheureusement, la classe XmlNode que j'utilise pour analyser un fichier XML avec des données de modèle n'est pas prise en charge par Silverlight 2. La directive consiste à utiliser LING vers XML à la place (http://silverlight.net/forums/t/14577.aspx). L'utilisation de LINQ me semble trop lourde pour ma tâche. J'envisage de remplacer le code d'analyse XML en utilisant le DOM XML avec un schéma basé sur des expressions régulières (pour analyser les attributs). Sinon, j'envisage d'écrire ma propre implémentation de XmlNode qui sera référencée au cas où le projet a été compilé pour Sliverlight 2.

Quelqu'un at-il déjà fait l'objet d'une comparaison? Quelqu'un at-il des suggestions (peut-être une troisième option) sur la façon de procéder (RegEx ou réécrire)?

Répondre

2

Vous ne savez pas à quel point Linq to Xml est trop puissant. Il est en fait beaucoup plus facile de faire l'analyse Xml avec Linq2xml une fois que vous avez compris. Je dirais que regex ou écrire votre propre XmlNode serait exagéré.

Si vous publiez une partie du travail XmlNode que vous faites, je suis sûr que vous obtiendrez de bonnes traductions. En attendant, voici un good introduction à quel point il est facile d'analyser des documents avec Linq en Xml.

Mise à jour: En réponse à la question des performances étant, tout ce que je pouvais trouver était que linq to xml est faster que XmlDocument.

+0

J'aurais dû être un peu plus spécifique. Je suis préoccupé par la surcharge de performance de l'utilisation de LINQ2XML par rapport à un simple analyseur personnalisé. LINQ utilisera la réflexion pour créer une instance de types anonymes. Le code personnalisé génère des instances directement par exemple. –

+0

Sauf si vous avez un scénario vraiment bizarre, les frais généraux des méthodes LINQ sont négligeables. Ma recommandation serait certainement d'aller avec cela au lieu de faire toute l'analyse à la main. – MojoFilter

0

La classe System.Xml.Linq contient les classes DOM XML comme XDocument, XElement, XNode et XAttribute qui sont beaucoup plus performantes et légères pour leurs parties XmlDocument, XmlElemnt etc. Vous pouvez utiliser ces classes sans utiliser Linq, mais avec Linq to Xml vous pouvez faire des choses très intéressantes. C'est absolument le chemin à parcourir!