XML Oracle SQL字符集ORA-31011:XML解析失败

时间:2016-11-10 10:23:27

标签: sql xml oracle parsing

我有一个我正在使用的XML SQL语句(参见下面的Oracle11g SQL)来克服传递错误(如下所示),SQL语句有效,但它确实删除了REGEXP_REPLACE中未指定的字符声明,例如需要包含在我的XML输出文件中的以下É Ë È,我可以包含这些以及更多,但是在REGEXP_REPLACE中还有一个简短的包含这些字符而没有命名长字符列表。我已经尝试过SQL select DBMS_XMLGEN.CONVERT(T.title),因为我被告知这会删除所有无效字符,但是这个失败的解析错误如下所示。

我使用REGEXP_REPLACE的原因,因为它因标题数据库字段中的某些字符(例如char(160)无中断空格)而失败。

是否有更简单的解决方案,或者我必须在REGEXP_REPLACE中包含一长串字符。

提前致谢。

DECLARE 
*
ERROR at line:
ORA-31011: XML parsing failed
ORA-06512: at line 8

麻烦是因为我正在处理不同的角色

SELECT XMLAGG ( XMLELEMENT ("referenceAvGroup",                                                               
                   XMLFOREST (cre_surr_id AS "societySeriesNumber",
                              'SERIES' AS "avGroupType"),
                          XMLELEMENT ("prodTitle",                                                                   
                                 XMLFOREST (title AS "title",
                                            tt_code_description AS "titleType")
                                      )                                                                         
                            )
               )                                                                      
FROM (  SELECT trim(REGEXP_REPLACE(T.title, '[^a-zA-Z0-9 ,!@():.#’"*&+}/\©{ÂÀÃÏÎÔ܀ǿ%´_$()'',-`]', '', 1, 0, 'i')) AS title,
                'ORIGINAL'  AS tt_code_description,
                T.tt_code AS tt_codes,
                T.cre_surr_id
        FROM    titles T
        WHERE   T.tt_code = Com0300.title_type_registered) 
WHERE cre_surr_id = prod.prod_series_cre_surr_id 

1 个答案:

答案 0 :(得分:1)

最后只是一个更新我跟下面的。似乎有很多控制字符已从文件加载到数据库中,导致我的SQL XML无法解析。使用下面的内容并删除这些字符后,我的SQL XML运行正常。感谢您就此主题提出的所有建议。

REGEXP_REPLACE(替换(prod.CAMPAIGN_NAME,CHR(160),''),' [[:CNTRL:]]&#39)