2010-09-15 6 views
4

Je voudrais avoir un avis sur la création d'un système de script hypothétique en utilisant XML. L'idée est d'utiliser un analyseur SAX et une réflexion C#.Analyseur XML SAX pour les scripts utilisant la réflexion

Je ne trouve pas de bibliothèque/cadre permettant de spécifier une action personnalisée à l'aide de fichiers XML. À l'heure actuelle, j'utilise le langage XML pour sérialiser les classes d'application. Un bogue peut être génial pour spécifier les actions que l'application doit exécuter en utilisant XML.

Alors, je pense à:

  • implémentation de l'analyseur SAX pour C#?
  • Conventions de script XML?

Ce que je voudrais réaliser est le: - Possibilité d'assigner une propriété d'instance de classe - Possibilité d'appeler instance de classe routines

En supposant que l'instance de classe est implicite, le script XML suivant serait être d'or pour moi:

<Script> 
    <Property Name='SomeProperty'> 
     <Value> 
      <...> 
     </Value> 
    </Property> 
    <RoutineCall> 
     <Parameters> 
      <Parameter Name='ArgName'> 
       <...> 
      </Parameter> 
     </Parameters> 
    </RoutineCall> 
</Script> 

C'est déjà fait par quelqu'un? C'est possible?

+0

L'idée me semble mauvaise. XML n'est généralement pas bon pour les scripts, car le code sera gonflé et difficile à écrire et à lire par rapport aux autres langages de script. Pourquoi ne pas utiliser PowerShell? Je crois, il offre pas moins de fonctionnalités que ce que vous décrivez, et il est certainement plus facile de travailler avec. – VladV

+0

Pourriez-vous fournir un exemple PowerShell? – Luca

+0

Voir cet article par exemple: http://datatypes.blogspot.com/2008/07/create-assembly-and-import-into.html. Évidemment, la même chose pourrait être faite dans un script, pas dans un shell interactif. – VladV

Répondre

1

Bien que non parseurs SAX, MSBuild et NAnt sont d'excellents exemples de plates-formes de script XML. Tous les deux soutiennent le développement d'actions personnalisées et ont de grandes communautés d'utilisateurs qui peuvent vous aider au fur et à mesure.

Si vous devez créer ceci à partir de zéro, je recommande de créer des classes sérialisables implémentant une interface d'exécution simple (par exemple, une méthode Run(), des événements connus, etc.). Vous pouvez ensuite utiliser le .NET XmlSerializer pour désérialiser des objets, les convertir en interface et appeler leurs routines.

1

Microsoft ne possède pas d'analyseur syntaxique SAX pour .Net. Cependant, ils ont une classe XmlTextReader que vous pouvez utiliser pour lire xml un noeud à la fois. En plus de MSBuild, il semble que le dialecte xaml utilisé par Microsoft d'abord pour WPF et maintenant dans .Net 4.0 WWF pourrait être similaire à ce que vous voulez faire en ce qui concerne les scripts. Je ne suis pas sûr de ce que sont vos besoins pour ce projet, si vous voulez vraiment tout faire, vous pouvez utiliser la technologie de génération de code dans. Net pour compiler le script afin d'obtenir de meilleures performances.

Questions connexes