【发布时间】:2014-04-02 04:49:55
【问题描述】:
考虑以下 XML:
<elements>
<element attribute="value1">
<or>
<subelement attribute="value2" />
<subelement attribute="value3" />
</or>
</element>
<element attribute="value">
<and>
<subelement attribute="value4" />
<subelement attribute="value5" />
<or>
<subelement attribute="value6" />
<subelement attribute="value7" />
</or>
</and>
</element>
</elements>
请注意,以下内容也是有效的:
<elements>
<element attribute="value1">
<subelement attribute="value2" />
</element>
</elements>
这是这样的:
<elements>
<element attribute="value1">
<and>
<or>
<subelement attribute="value2" />
<subelement attribute="value3" />
</or>
<or>
<subelement attribute="value4" />
<subelement attribute="value5" />
</or>
</and>
</element>
</elements>
(上面的例子相当于(value2 or value3)AND(value4 or value5)
我尝试使用 xsd.exe 从 XML 创建一个 XSD 文件,然后创建一个 .cs 类,但这不足以满足我的需求,因为我需要可以具有任意深度的东西。
如何在 C# 中将其建模为类?我的想法可能是某种流畅的构建器模式?
谢谢,
理查德
附:任何能够想出一种方法来验证由这种类结构创建的规则的人都会得到 /hug :)
【问题讨论】:
-
您应该查看
Expression树 (msdn.microsoft.com/en-us/library/bb397951.aspx)。他们的类层次结构应该给你一个如何建模的例子。 -
是的,我调查过,但我的脑袋爆炸了。我听说这在调查表达式树时很常见:)