次の 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# オブジェクト (逆シリアル化) を作成する方法を知っている人はいますか?
可能であれば、例、またはそのようなものを構築する方法のチュートリアルを見てうれしいです。