在XML中存储条件逻辑(逻辑结构)

时间:2009-01-20 00:46:55

标签: xml vb.net conditional

我需要将简单的条件表达为程序输入。输入必须是人类可读的。

XML适用于此吗?

例如,我有以下条件语句:

If AnimalType = Leopard And (SourceCountry = Kenya Or TargetCountry = Kenya) Then
    ZooKeeper=Jack
Else
    ZooKeeper=Jill
End If

在XML中表达上述内容可能如下所示:

<If>                
    <Conditional>           
        <And>       
            <AnimalType>Leopard<AnimalType> 
            <Or>    
                <SourceCountry>Kenya</SourceCountry>
                <TargetCountry>Kenya</TargetCountry>
            </Or>   
        </And>      
    </Conditional>  
    <True>  
        <ZooKeeper>Jack</ZooKeeper>
    </True> 
    <False> 
        <ZooKeeper>Jill</ZooKeeper>
    <False> 
</If>   

关于如何最好地用XML表示条件语句的任何想法?

我还没有探索过使用属性。我目前不需要嵌套的'If'语句或'Else If'子句,但我还是会尝试使用它们。

在这种情况下,VB代码可能比XML更“可读”,我应该创建一个自定义的平面文件格式。

4 个答案:

答案 0 :(得分:2)

对此XML没有任何问题,但是您可以使用更轻松的语法(如LISP样式列表)来节省一些开销:

(if
    (and
         (AnimalType Leopard)
         (or
             (SourceCountry Kenya)
             (TargetCountry Kenya)
         )
     )
     (ZooKeeper Jack)
     (ZooKeeper Jill)
 )

您可以使用if中的项目排序,而不是显式声明条件,true,false。您将拥有的基本要求是保留适当的语法树。

答案 1 :(得分:1)

也许您已经听说过或看过RuleML

这似乎是你正在寻找的。有一个开源规则引擎,它使用我在C#中使用的RuleML for .NET:NxBRE

NxBRE还有一个Visio模板,可以让其他人轻松了解规则。他们还尝试了人类可读的格式,但我不确定它是否仍在进行中。

答案 2 :(得分:0)

你说你希望它是人类可读的,然后你提出了一个几乎难以理解的XML示例。我不确定XML在这里买了什么。一个真正易读的语言的简单解析器可能是你的时间的一个很好的投资。

答案 3 :(得分:0)

由于在这种情况下XML很方便而且VB非常“人性化”,我想我会用这样的东西:

    <Conditional>
        If AnimalType = Leopard And (SourceCountry = Kenya Or TargetCountry = Kenya) Then
            ZooKeeper=Jack
        Else
            ZooKeeper=Jill
        End If
    </Conditional>