Pokud to potřebujete udělat pouze pomocí "box", můžete použít:
SELECT REPLACE(XMLELEMENT( "Consignment", XMLATTRIBUTES('123' AS "id",sysdate AS "date" ),
XMLELEMENT( "Box", xmlattributes( '321' as "id" ))
).getstringval(),'></Box>',' />') as xxx FROM DUAL;
Pokud máte další značky, které je třeba zpracovat tímto způsobem, budete muset použít REGEXP_REPLACE se stejnou logikou.
Sémanticky však obě formy představují přesně stejná data, což je důvod, proč nemůžete dělat to, co chcete, "snadno" s nějakým parametrem daným generátoru XML (a proč byste to možná neměli dělat!) .