Suppose I have this XML file:\[code\] <functionList><function name="a" id="11" > <InputParameters> <Value> <Range> <DiscreteRange> <DiscreteValue value="http://stackoverflow.com/questions/15463244/0" description="Stream 1" /> <DiscreteValue value="http://stackoverflow.com/questions/15463244/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="http://stackoverflow.com/questions/15463244/0" description="Stream 1" /> <DiscreteValue value="http://stackoverflow.com/questions/15463244/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="http://stackoverflow.com/questions/15463244/0" description="Stream 1" /> <DiscreteValue value="http://stackoverflow.com/questions/15463244/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>\[/code\]In general my XML Structural Look Like this: \[code\] <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...-->\[/code\]As far as I understand using a built in C# deserialize does not work, because There is no a fixed structure to the file.Does anyone have an idea how I create a hierarchy C# objects (deserialize) base on this structure?If it's possible I'd glad to see an example, or maybe a tutorial how to build such a thing.