This post is a simple illustration of insert an empty node at the end of an existing node. This post is based on a post at sqlservercentral.com. Below is the XML we are starting with, assigned to a variable in SQL Server.
DECLARE @TXML XML = ' <Attribute> <A1>6529</A1> <A2>6529</A2> </Attribute>';
Here is what we want to end up with.
<Attribute> <A1>6529</A1> <A2>6529</A2> <A3 /> </Attribute>
Here is the SQL code that accomplishes our goal.
DECLARE @TXML XML = '
<Attribute>
<A1>6529</A1>
<A2>6529</A2>
</Attribute>';
DECLARE @NNODE VARCHAR(100) = 'A3';
DECLARE @NVAL VARCHAR(100) = '';
DECLARE @Nt VARCHAR(200) = '<{{@NNODE}}>{{@NVAL}}</{{@NNODE}}>';
DECLARE @NXML XML;
SELECT @NXML = CONVERT(XML,REPLACE(REPLACE(@NT,'{{@NNODE}}',@NNODE),'{{@NVAL}}',@NVAL),0);
SET @TXML.modify('insert sql:variable("@NXML") as last into (/Attribute)[1]');
SELECT @TXML;