Om du bara behöver göra detta med "box", så kan du använda :
SELECT REPLACE(XMLELEMENT( "Consignment", XMLATTRIBUTES('123' AS "id",sysdate AS "date" ),
XMLELEMENT( "Box", xmlattributes( '321' as "id" ))
).getstringval(),'></Box>',' />') as xxx FROM DUAL;
Om du har andra taggar som behöver bearbetas på detta sätt måste du använda REGEXP_REPLACE med samma logik.
Men semantiskt representerar båda formerna exakt samma data, vilket är anledningen till att du inte kan göra vad du vill göra "enkelt" med någon parameter som ges till XML-generatorn (och varför du kanske inte borde göra det i första hand!) .