【问题标题】:XML Oracle SQL character sets ORA-31011: XML parsing failedXML Oracle SQL 字符集 ORA-31011: XML 解析失败
【发布时间】:2016-11-10 10:23:26
【问题描述】:

我有一个 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 

【问题讨论】:

  • 维护一个要替换的字符列表可能更容易...
  • 能否更新您的问题以包含复制您所看到问题的示例数据?
  • 这个参数设置了什么? SELECT * FROM V$NLS_PARAMETERS where parametrer= 'NLS_NCHAR_CONV_EXCP'
  • 看起来你的 XML 有很多问题; stackoverflow.com/questions/40493076/…stackoverflow.com/questions/38877171/… 为什么你喜欢删除特殊字符?这不是问题的根源。
  • 试试UTL_I18N.ESCAPE_REFERENCE(title, 'us7ascii')

标签: sql xml oracle parsing


【解决方案1】:

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

regexp_replace(replace(prod.CAMPAIGN_NAME,chr(160),''),'[[:cntrl:]]')

【讨论】:

    猜你喜欢
    • 2017-03-22
    • 2019-06-22
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多