首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle xml DBMS_XMLDOM中的撇号

Oracle xml DBMS_XMLDOM中的撇号
EN

Stack Overflow用户
提问于 2018-01-16 17:11:15
回答 1查看 282关注 0票数 0

使用PLSQL,我创建了一个提供SEPA文件(xml文件)的程序。我正在使用DBMS_XMLDOM包。问题是撇号在xml文件中显示为'& apos;‘。

以下是程序的一部分:

代码语言:javascript
复制
text_value := MyCursor.ndest -- this a cursor value from the database. Let's say a name (D'ASILVA)

-- displaying text_value I see the apostrophe.

child_ofchelement:= DBMS_XMLDOM.CREATEELEMENT(doc,'Nm');
node:=DBMS_XMLDOM.APPENDCHILD(parent_node,dbms_xmldom.makenode (child_ofchelement));
l_text := DBMS_XMLDOM.createTextnode(doc,trim(text_value));
node := DBMS_XMLDOM.appendchild (node,dbms_xmldom.makenode(l_text));
....
dbms_xmldom.writeToFile(doc,rep_pwd||'/'||l_outfile, 'UTF8'); -- write DOM into file
dbms_xmldom.freeDocument(doc);

数据库编码为ISO-8859-1。在表中,值有撇号,在文件中它被替换为& apos;

首先,我尝试更改文件的编码:

代码语言:javascript
复制
dbms_xmldom.writeToFile(doc,rep_pwd||'/'||l_outfile, 'WE8ISO8859P1');

格式很好,但仍然是“'”

其次,我尝试了:

代码语言:javascript
复制
text_value := utl_i18n.unescape_reference(MyCursor.ndest);

同样的问题。

它更像是在writeToFile中变成了'& apos;‘。

有没有办法不用& apos;来转义撇号?

你能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-21 00:12:30

你可以把你的文本放在CDATA部分:

代码语言:javascript
复制
DECLARE
    doc dbms_xmldom.domdocument;
    parent_node dbms_xmldom.domnode;
    child_ofchelement dbms_xmldom.domelement;
    node dbms_xmldom.domnode;
    --change element type
    l_text dbms_xmldom.DOMCDATASECTION;
    text_value varchar2( 32 ) := 'D''ASILVA';
    clobdoc clob;
BEGIN
    doc := dbms_xmldom.newDOMDocument();
    dbms_xmldom.setVersion(doc, '1.0');
    parent_node := dbms_xmldom.makenode( doc );

    child_ofchelement := DBMS_XMLDOM.CREATEELEMENT( doc, 'Nm' );
    node := DBMS_XMLDOM.APPENDCHILD( parent_node, dbms_xmldom.makenode ( child_ofchelement ) );

    --change element creation method
    l_text := DBMS_XMLDOM.CREATECDATASECTION( doc, trim( text_value ) );

    node := DBMS_XMLDOM.appendchild( node, dbms_xmldom.makenode( l_text ) );

    dbms_lob.createtemporary(clobdoc, false);
    DBMS_XMLDOM.writeToClob(doc,clobdoc);
    dbms_output.put_line( clobdoc );

    dbms_xmldom.freeDocument(doc);
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48277627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档