Nếu bạn chỉ cần thực hiện việc này với "box", thì bạn có thể sử dụng:
SELECT REPLACE(XMLELEMENT( "Consignment", XMLATTRIBUTES('123' AS "id",sysdate AS "date" ),
XMLELEMENT( "Box", xmlattributes( '321' as "id" ))
).getstringval(),'></Box>',' />') as xxx FROM DUAL;
Nếu bạn có các thẻ khác cần được xử lý theo cách này, bạn sẽ cần sử dụng REGEXP_REPLACE theo cùng một logic.
Tuy nhiên, về mặt ngữ nghĩa, cả hai biểu mẫu đều đại diện cho cùng một dữ liệu chính xác, đó là lý do tại sao bạn không thể làm những gì bạn muốn một cách "dễ dàng" với một số tham số được cung cấp cho trình tạo XML (và tại sao có thể bạn không nên làm điều đó ngay từ đầu!) .