Since you're only looking for ONE row, there is no reason to use the relatively expensive .nodes() function.
SELECT @XML.value('(/tokens/token/typeid/text())[1]', 'int') AS typeidid,
@XML.value('(/tokens/token/p1/text())[1]', 'decimal(6,3)') AS p1id
Drew