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