LPX-00230:无效字符0(U + 0000)在发现名称或包含的Nmtoken

问题描述:

我收到:LPX-00230:无效字符0(U + 0000)在发现名称或包含的Nmtoken

  • ORA-31011:XML解析失败
  • ORA-19202:发生在XML处理
  • 错误
  • LPX-00230:无效字符在一个名称或包含的Nmtoken结果0(U + 0000)
  • 错误在第2行
  • ORA-06512:在 “SYS.XMLTYPE”,线254
  • ORA-06512:在第1行

当试图执行:

select extractValue(
    XMLType(
    replace(myxmlcolumn,CHR(0),'' 
    ) 
), '/xpath/to/data' 
) 
foo,bar,foobar 
from sch.tab 

WHERE cond='cond' 

“myxmlcolumn” 当然是CLOB数据类型,而是包含XML。如果我没有在NULL上执行replace(),那么这个错误会有意义。这和错误是间歇性的(可能对我的子句进行匹配)。在XML转换之前它应该被替换时,如何报告null?

10g企业版发布10.2.0.5.0,蟾蜍为Oracle亲10.6.1.3

编辑: - 也试图与“H”,以证明它不是在插入空回替换(同样的错误) - 也尝试更换(myxmlcolumn, '\ n', '' 的情况下,它并没有像CHR(0)(同样的错误)

这不是一个优雅的解决方案,我觉得有点肮脏。从@jonearles回答它看起来像一个已知的bug。简单的解决方案是不是甚至试图转换为XML。希望没有需要先进的xpath,在我的情况下不是。

Select dbms_lob.substr(myxmlcolumn, 10, dbms_lob.instr(myxmlcolumn,'<data>') + 6) 

“数据”是我追的元素,它发生,始终保持一个值是10长,并且是元素的第一个也是唯一出现这样......我真的很幸运。

搜寻我的Oracle支持LPX-00230,这看起来像臭虫9871430.

(我会发布更多细节,但我认为我们不应该分享该网站的信息。)

+0

我不认为你可以建议任何形式的*咳嗽*解决方法或至少是错误的原因?是否有某种最佳做法,或至少是“避免这样做”的博客,这不需要企业支持合同?我只是一个简单的承包商。 – slipsec 2012-04-26 15:12:32

+0

我想我必须相信你,才能给你一个满意的答卷。当然希望我能看到幕后。 – slipsec 2012-04-26 20:49:50