【问题标题】:LPX-00230: invalid character 0 (U+0000) found in a Name or NmtokenLPX-00230:在名称或 Nmtoken 中发现无效字符 0 (U+0000)
【发布时间】:2012-05-06 13:08:49
【问题描述】:

我收到:

  • 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,Toad for Oracle pro 10.6.1.3

编辑: - 还尝试用“H”替换以证明它没有重新插入 NULL(同样的错误) - 还尝试了 replace(myxmlcolumn,'\n','' 以防它不喜欢 chr(0) (同样的错误)

【问题讨论】:

    标签: xml oracle xmltype


    【解决方案1】:

    在我的 Oracle 支持中搜索 LPX-00230,这看起来像错误 9871430。

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

    【讨论】:

    • 我不认为您可以建议任何类型的 cough 解决方法或至少是错误的原因?是否有某种最佳实践,或者至少有一个不需要企业支持合同的“避免这样做”博客?我只是一个简单的承包商。
    • 我想我必须足够信任你才能给你投票。当然希望我能看到窗帘后面。
    【解决方案2】:

    这不是一个优雅的解决方案,我觉得有点脏。从@jonearles 的回答来看,它看起来像是一个已知的错误。简单的解决方案是 甚至尝试转换为 XML。希望不需要任何高级 xpath,在我的情况下不需要。

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

    “data”是我所追求的元素,它恰好总是持有一个 10 长的值,并且是该元素的第一次也是唯一一次出现,所以......我很幸运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-16
      • 2020-04-14
      • 1970-01-01
      • 2018-10-18
      • 2019-05-19
      • 2018-02-20
      • 1970-01-01
      • 2017-11-06
      相关资源
      最近更新 更多