2010-06-30 6 views
0

Dans mon programme, je reçois du code XML. Si les valeurs dans ce XML remplissent un critère défini par l'utilisateur, je stocke le XML, sinon il sera rejeté. Le problème que j'ai, c'est que je dois être en mesure de permettre à l'utilisateur de définir les critères (en combinant également plusieurs éléments avec "OU" et "ET"), puis en appliquant cela lorsque je reçois le XML. Ceci est une application C#, quelqu'un peut-il recommander une bibliothèque, un outil ou une aide dans la façon dont je devrais résoudre ce problème? Ci-dessous est le XML que je recevrai. L'utilisateur ne peut vouloir stocker que si <unit> =1 ET (la première partie de <data> = Z ou <data> a ABC après la deuxième virgule).générateur d'expression pour XML

<interface> 
    <mac>12345</mac> 
    <device>DeviceTypeA</device> 
    <id>TestUnit</id> 
    <data> 
    <unit>1</unit> 
    <transaction> 
     <event>0</event> 
     <data>Z,0,ABC,1234</data> 
     <time>2010-06-29T11:33:44.0000000Z</time> 
    </transaction > 
    </data> 
</interface> 

Répondre

-1

Est-ce que vos utilisateurs peuvent voir le code XML? Si oui, vous pouvez simplement permettre à l'utilisateur d'entrer une expression XPath, comme

/interface/data/unit=1

ou

substring-before(',',/interface/data/transaction/data)='Z'

puis faites simplement

if (xml.SelectNodes(xPathExpression) == null) /*discard*/

à mon humble avis tout le monde qui travaille avec XML devrait être encouragé à apprendre XPath; vous pourriez fournir quelques exemples simples à côté de l'entrée pour aider.

Si vos utilisateurs ne voient pas le XML, il est probablement préférable d'avoir quelques conditions prédéfinies que l'utilisateur peut sélectionner puis fournir une valeur, sinon vous allez devoir créer un analyseur d'expression complet , qui est probablement exagéré pour une tâche comme celle-ci.