在 oracle 的 XML 文档中添加命名空间

Add namespace in an XML doc in oracle

我需要在 xml 文档中添加名称空间详细信息。

我已经有了命名空间

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

和xml数据在

l_xmltype :=dbms_xmldom.getXmlType(l_domdoc);

dbms_xmldom.freeDocument(l_domdoc); dbms_output.put_line(l_xmltype.getClobVal);

这个l_xmltype是纯粹的XML,没有命名空间。如何用这个 l_xmltype 连接命名空间。请帮忙

如果只是

<?xml version="1.0" stadalone="yes"?>

那么您将使用函数 XMLROOT

XMLROOT 但是不支持编码标签。您可以 "hack" 通过使用参数值为 "version" 的 XMLROOT 作为 '1.0" encoding="utf-8' 而不是 '1.0' 作为回答 here。但是不推荐这样做。

如果您可以访问 oracle 支持,请阅读文档 Doc ID 1449682.1。 Oracle 建议您改为这样做 -

SELECT 
   XMLTYPE(
       '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' 
       || l_xmlvariable_or_column
       )
FROM MY_TABLE;

请记住,上面语句中的encoding="xxxx"会自动更改为客户端请求的字符集。要将其设置为 utf-8,请将 NLS_LANG 参数设置为 AL32UTF8