It is a very bad idea to store XML data in a string column.
Even worse, you are storing a string, which is claiming I'm encoded as utf-8!, but it is stored in a column of NVARCHAR, which is UCS-2 (almost the same as utf-16).
That means, that you have to repair this and cast the string to XML before you can use it. You'll have to do these expensive operations whenever you grab into it. If you can change this, you should store XML in a column natively typed.
Nevertheless this can be done. Try this.
Create table #temp
(
ID varchar(50) not null,
[Action] nvarchar(max) null
)
INSERT INTO #temp(ID,[Action]) VALUES
('test 1',
'<?xml version="1.0" encoding="UTF-8"?>
<oo_outbound_order>
<oo_master>
<Code>123</Code>
<Name>Branan</Name>
</oo_master>
</oo_outbound_order>');
SELECT t.ID
,ActionXml.value('(/oo_outbound_order/oo_master/Code/text())[1]','nvarchar(max)') AS CODE
,ActionXml.value('(/oo_outbound_order/oo_master/Name/text())[1]','nvarchar(max)') AS [Name]
FROM #temp t
CROSS APPLY(SELECT CAST(REPLACE(t.[Action],'encoding="UTF-8"','encoding="UTF-16"') AS XML) ActionXml) A;
drop table #temp;
Hint: If there are no repeating elements, there is no need for .nodes() as other answers suggest...