For the display issue, there used to be a handy "bug" in the results grid, in SSMS, swapping the position of an XML column and clicking on it, would display the contents of the column (left or right) of the XML*(this depends on the initial position of the xml in the resultset)
declare @json nvarchar(max) = concat('["a"', replicate(cast(concat(',"', newid(), '"') as nvarchar(max)), 10000), ']');
select isjson(@json) as _isjson, len(@json) as _len;
select
'<![CDATA[content start-->'+ @json + ' <-- content end]]>' as colA,
cast('drag me to the left of colA and click me' as xml) as b;
CDATA
is not actually needed if colA does not contain any breaking & illegal XML characters.
declare @longchar nvarchar(max) = concat('"a"', replicate(cast(concat(',"', newid(), '"') as nvarchar(max)), 10000));
select
@longchar as colA,
cast('drag me to the left of cola and click me' as xml) as b;