store sql handle from xml to table for later use SQL Server 2014

I have an application that provides the xml for blocking reports.  The xml contains a sqlhandle that I'm wanting to store in a separate database for later consumption.

The sql handle is stored in the table using the following code

INSERT INTO BlockingSqlHandle(BlockID, SQLServerID, Line, StmStart, StmEnd, sqlhandle)
SELECT f.BlockID,
       f.SQLServerID,
       f.frame.value('data(/frame/@line)[1]','INT') line,
       f.frame.value('data(/frame/@stmtstart)[1]','INT') stmtstart,
       f.frame.value('data(/frame/@stmtend)[1]','INT') stmtend,
       f.frame.value('data(/frame/@sqlhandle)[1]','VARCHAR(1000)') sqlhandle
  FROM f;


However when I try to pull the sqlhandle out for use in sys.dm_exec_sql_text() I get an error "The handle that was passed to dm_exec_sql_text was invalid." 
Or no value is returned.

If I pull the handle from the xml and put it into the query manually it returns just fine.

What is the proper way to store a varbinary value that comes from a file so that I can pull the value out and use it with dm_exec_sql_text?
Objects pointed to by handles are temporary.  Do not store them, however if you do store them, use a varbinary(64) datatype and realize the object they refer to may not exist in memory later on.

Instead of storing the handle, it's likely much better to pull the actual sql text or plan text, and store that.

From Microsoft Docs:


  The lifetime of sql_handles used to retrieve the SQL text [...] outlives the cached plan used to execute the query. If the query text is not available in the cache, the data cannot be retrieved using the information provided in the function result.