这个SQL
SELECT XMLRoot(XMLType('<poid>143598</poid>'), VERSION '1.0', STANDALONE YES)
AS xmlroot FROM DUAL;
如下生成输出
XMLROOT
--------------------------------------
<?xml version="1.0" standalone="yes"?>
<poid>143598</poid>
在我的XML序言如何获得编码?
恩 - 我想输出是这样的
XMLROOT
--------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<poid>143598</poid>
参考 -
生成从数据库中的XML数据
select xmlroot (xmltype ('<poid>143598</poid>')
, version '1.0" encoding="UTF-8'
) "XMLRoot"
from dual;
奇怪......不过貌似版本参数可以有这样的事 -
更换
version '1.0'
同
version '1.0" encoding="utf-8'
产出
XMLROOT
--------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<poid>143598</poid>
这是很容易,但让我解释一下甲骨文的可能的逻辑:
字符数据默认存储在数据库中的编码。 如果你想指定编码则很可能是由数据库编码不同。 行,让它BLOB,在所希望的编码表示,即字节流。 因此,我们应该使用XMLSERIALIZE函数中任何编码创建代表(包括默认DB编码以及)
select
xmlserialize(document xmltype('<Envelop>Any UTF charachers. Tous les caractères UTF. כל תווי UTF </Envelop>') as blob encoding 'UTF-8' version '1.0')
from dual;
如果您的默认编码数据库是UTF-8,那么你也可以换这个调用到to_clob(…)
甚至to_char(…)
看到的结果。 为了我
select
to_char(xmlserialize(document xmltype('<Envelop>Any UTF charachers. Tous lescaractères UTF. כל תווי UTF </Envelop>') as blob encoding 'UTF-8' version '1.0'))
from dual;
得到:
<?xml version="1.0" encoding="UTF-8"?>
<Envelop>Any UTF charachers. Tous les caractères UTF. כל תווי UTF </Envelop>