在 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
。
我需要在 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
。