• After turning your sample into valid XML, I was able to query it with T-SQL

    DECLARE @xml XML = '

    <CompoundLogData>

    <ArrayOfEntry>

    <Entry>

    <DataType>Session:City</DataType>

    <Value type="xsd:string">Glen Allen</Value>

    </Entry>

    <Entry>

    <DataType>Session:State</DataType>

    <Value type="xsd:string">VA</Value>

    </Entry>

    <Entry>

    <DataType>Session:ZipCode</DataType>

    <Value type="xsd:string">74115</Value>

    </Entry>

    <Entry>

    <DataType>Session:Childrens</DataType>

    <Value type="q1:AddEditChildViewModel"/>

    <Child>

    <ChildFirstName>ABC</ChildFirstName>

    <ChildLastName>TTT</ChildLastName>

    <BirthMonth>5</BirthMonth>

    <BirthYear>1999</BirthYear>

    <MemberId>0004554</MemberId>

    <IsRemoved>false</IsRemoved>

    <HasFreeMembership>true</HasFreeMembership>

    </Child>

    </Entry>

    </ArrayOfEntry>

    </CompoundLogData>';

    -- Look at the individual "Entry" nodes

    SELECTc.query('.')

    FROM @xml.nodes('CompoundLogData/ArrayOfEntry/Entry') T(c)

    /* Retrieve all columns, based on assumptions about the sample XML

    There will be one or more ArrayOfEntry nodes

    Only the first Entry node for City, State, and ZipCode will be shown for each ArrayOfEntry

    The cardinality of the "Session:Childrens" nodes is not specified, so this assumes it is 0, 1, or many

    The Value/@type attributes are not used, assuming they are not necessary

    */

    SELECTCity = ArrayOfEntry.value('(Entry[DataType = "Session:City"]/Value)[1]', 'varchar(50)'),

    State = ArrayOfEntry.value('(Entry[DataType = "Session:State"]/Value)[1]', 'char(2)'),

    ZipCode = ArrayOfEntry.value('(Entry[DataType = "Session:ZipCode"]/Value)[1]', 'varchar(15)'),

    c.*

    FROM @xml.nodes('CompoundLogData/ArrayOfEntry') T(ArrayOfEntry)

    OUTER APPLY (

    SELECTChildFirstName = Child.value('ChildFirstName[1]', 'varchar(50)'),

    ChildLastName = Child.value('ChildLastName[1]', 'varchar(50)'),

    BirthMonth = Child.value('BirthMonth[1]', 'tinyint'),

    BirthYear = Child.value('BirthYear[1]', 'smallint'),

    MemberId = Child.value('MemberId[1]', 'varchar(50)'),

    IsRemoved = Child.value('IsRemoved[1]', 'bit'),

    HasFreeMembership = Child.value('HasFreeMembership[1]', 'bit')

    FROMArrayOfEntry.nodes('(Entry[DataType = "Session:Childrens"]/Child)') p2(Child)

    ) c