• Not sure WHY this works, but it works.  I changed the Path in the FROM clause to include the /ID node, and then use .value method to get the value -1 as an int.  Note the pathing in the other .query method has to change.  Not sure how to apply .value to those the get the values out.  Surely, this is not that complicated.

    Declare @FeatureData Xml

    Set @FeatureData = '

    <DocumentElement>

    <Features>

    <TableID>-1</TableID>

    <ID>-1</ID>

    <Name>Bering Sea</Name>

    <Prefix />

    <Suffix />

    <FeatureType />

    <Version>06.10</Version>

    <FileID>02013</FileID>

    <LineID>1</LineID>

    </Features>

    </DocumentElement>'

    Select

    doc.rows.query('../ID/text()') As ID,

    doc.rows.query('../Name/text()') As Name,

    doc.rows.query('../Prefix/text()') As Prefix,

    doc.rows.query('../FileID/text()') As FileID,

    doc.rows.query('../LineID/text()') As LineID,

    doc.rows.value('.','int')

    FROM @FeatureData.nodes('//Features/ID') As doc(rows)