假设我有这个 XML 文件:
<functionList>
<function name="a" id="11" >
<InputParameters>
<Value>
<Range>
<DiscreteRange>
<DiscreteValue value="0" description="Stream 1" />
<DiscreteValue value="1" description="Stream 2" />
</DiscreteRange>
</Range>
</Value>
</InputParameters>
<ReturnValues>
<Status type="BYTE" description="0 successful, error otherwise">
<Range>
<SequenceRange min="0x00" max="0xFF"/>
</Range>
</Status>
<Value type="UWORD32" description="Stream select setting">
<Range>
<DiscreteRange>
<DiscreteValue value="0" description="Stream 1" />
<DiscreteValue value="1" description="Stream 2" />
</DiscreteRange>
</Range>
</Value>
</ReturnValues>
</functions>
<function name="b" id="12" >
<InputParameters>
<Value>
<Range>
<SequenceRange min="0x00" max="0xFF"/>
</Range>
</Value>
</InputParameters>
<ReturnValues>
<Status type="BYTE" description="0 successful, error otherwise">
<Range>
<SequenceRange min="0x00" max="0xFF"/>
</Range>
</Status>
<Value type="UWORD32" description="Stream select setting">
<Range>
<DiscreteRange>
<DiscreteValue value="0" description="Stream 1" />
<DiscreteValue value="1" description="Stream 2" />
</DiscreteRange>
</Range>
</Value>
</ReturnValues>
</functions>
<function name="c" id="13" >
<InputParameters></InputParameters>
<ReturnValues>
<Status type="BYTE" description="0 successful, error otherwise">
<Range>
<SequenceRange min="0x00" max="0xFF"/>
</Range>
</Status>
</ReturnValues>
</function>
一般来说,我的 XML 结构看起来像这样:
<functionList >
<function name="" id="">
<InputParameters>
<!--Optional -->
<Value type="" description="">
<Range>
<!--OR-->
<DiscreteRange>
<DiscreteValue value="" description="" />
<DiscreteValue value="" description="" />
<!--...-->
</DiscreteRange>
<!--OR-->
<SequenceRange min="" max=""/>
<!--OR-->
<StringRange characters=""/>
<!--OR-->
<CharRange/>
</Range>
</Value>
<!-- <Value type="" description="">...-->
<!-- </Value>-->
<!-- <Value type="" description="">...-->
<!-- </Value>-->
<!-- <Value type="" description="">...-->
<!-- </Value>-->
<!--...-->
</InputParameters>
<ReturnValues>
<Status type="" description="">
<Range>
<!--OR-->
<DiscreteRange>
<DiscreteValue value="" description="" />
<DiscreteValue value="" description="" />
<!--...-->
</DiscreteRange>
<!--OR-->
<SequenceRange min="" max=""/>
<!--OR-->
<StringRange characters=""/>
<!--OR-->
<CharRange/>
</Range>
</Status >
<!--Optional -->
<Value type="" description="">
<Range>
<!--OR-->
<DiscreteRange>
<DiscreteValue value="" description="" />
<DiscreteValue value="" description="" />
<!--...-->
</DiscreteRange>
<!--OR-->
<SequenceRange min="" max=""/>
<!--OR-->
<StringRange characters=""/>
<!--OR-->
<CharRange/>
</Range>
</Value>
<!-- <Value type="" description="">...-->
<!-- </Value>-->
<!-- <Value type="" description="">...-->
<!-- </Value>-->
<!-- <Value type="" description="">...-->
<!-- </Value>-->
<!--...-->
</ReturnValues>
</function>
<!--function...-->
据我了解,使用内置的 C# 反序列化不起作用,因为文件没有固定的结构。
有谁知道我如何基于此结构创建层次结构 C# 对象(反序列化)?
如果可能的话,我很乐意看到一个例子,或者一个如何构建这样一个东西的教程。