我需要C#逻辑来分析XML文件中的某些条件。逻辑应该能够评估的条件,只是告诉我最后的结果是真还是假:编写一个分析XML数据的递归方法
举例:1: 规则(A和B和C)是在XML文件中这样表示:
<Evaluate>
<!-- (A AND B AND C)-->
<AND>
<Condition Name="A" Operator="!=" Value="0"/>
<Condition Name="B" Operator="!=" Value="0"/>
<Condition Name="C" Operator="==" Value="17"/>
</AND>
</Evaluate>
我知道这是简单的事,但下面是一些复杂的规则,从C#代码需要评价: 举例:2:
<Evaluate>
<!-- (A AND B) OR C -->
<OR>
<Condition Name="C" Operator="==" Value="17"/>
<AND>
<Condition Name="A" Operator="!=" Value="0"/>
<Condition Name="B" Operator="!=" Value="0"/>
</AND>
</OR>
</Evaluate>
举例:3:
<Evaluate>
<!-- (A) OR ((B AND C) OR D)-->
<OR>
<Condition Name="A" Operator="!=" Value="0"/>
<OR>
<Condition Name="D" Operator="!=" Value="0"/>
<AND>
<Condition Name="B" Operator="!=" Value="0"/>
<Condition Name="C" Operator="!=" Value="0"/>
</AND>
</OR>
</OR>
</Evaluate>
实施例:4:
<Evaluate>
<!-- (A AND B) OR ((C AND D) OR E)-->
<OR>
<AND>
<Condition Name="A" Operator="!=" Value="0"/>
<Condition Name="B" Operator="!=" Value="0"/>
</AND>
<OR>
<Condition Name="E" Operator="!=" Value="0"/>
<AND>
<Condition Name="C" Operator="!=" Value="0"/>
<Condition Name="D" Operator="!=" Value="0"/>
</AND>
</OR>
</OR>
</Evaluate>
为了解释您关于XML节点:
<Condition Name="D" Operator="!=" Value="0"/>
意味着,(d!= 0)或没有。
您的帮助,将不胜感激。
有趣的,我不会用递归这个,因为它可能会耗尽内存,如果XML文件太大。你可能需要去编写你自己的解析器;) – GETah 2012-07-07 09:22:44
@GETah:任何大到足以导致问题的文件都必须表示*非常复杂的逻辑。 – 2012-07-07 09:25:02
你已经告诉过我们你想要达到的目标,但是你发现哪一部分很难。你有多远? – 2012-07-07 09:25:51