【问题标题】:Converting clob to xml parse error将 clob 转换为 xml 解析错误
【发布时间】:2018-06-15 09:57:25
【问题描述】:

我正在尝试将 clob 转换为 xml。我收到以下错误:

ORA-31011: XML 解析失败 ORA-19202: XML 处理中发生错误 LPX-00601:无效令牌在:'/KrediBilgi/'

程序:

procedure parse_xml(response in CLOB) is
    l_xmlType XMLTYPE;
  begin
   l_xmlType := XMLTYPE.CreateXML(response); 
   FOR r IN (
    SELECT ExtractValue(Value(p),'/KrediBilgi/Durum/text()') as durum
      ,ExtractValue(Value(p),'/KrediBilgi/GuncelRisk/text()') as risk
      ,ExtractValue(Value(p),'/KrediBilgi/GuncelRiskTarih/text()') as tarih
      ,ExtractValue(Value(p),'/KrediBilgi/KrediHesapNo/text()') as hesapNo
      ,ExtractValue(Value(p),'/KrediBilgi/KrediKod/text()') as krediKod
      ,ExtractValue(Value(p),'/KrediBilgi/KrediKonu/text()') as krediKonu
      ,ExtractValue(Value(p),'/KrediBilgi/KrediTur/text()') as krediTur
      ,ExtractValue(Value(p),'/KrediBilgi/KrediTutar/text()') as krediTutar
      ,ExtractValue(Value(p),'/KrediBilgi/PbKod/text()') as pbKod
      ,ExtractValue(Value(p),'/KrediBilgi/ProjeKod/text()') as projeKod
FROM   TABLE(XMLSequence(Extract(l_xmlType,'/KrediBilgi/'))) p
) LOOP
  dbms_output.put_line(r.durum);
  dbms_output.put_line(r.risk);
  dbms_output.put_line(r.tarih);
  dbms_output.put_line(r.hesapNo);
  dbms_output.put_line(r.krediKod);
  dbms_output.put_line(r.krediKonu);
  dbms_output.put_line(r.krediTur);
  dbms_output.put_line(r.krediTutar);
  dbms_output.put_line(r.pbKod);
  dbms_output.put_line(r.projeKod);
  END LOOP;
 end parse_xml;

【问题讨论】:

  • 你能把你传递给proc的response也发给你吗?

标签: xml plsql clob


【解决方案1】:

如果你的xml结构:

<KrediBilgi>
    <Durum>text1</Durum>
    <GuncelRisk>text2</GuncelRisk>
    ...
</KrediBilgi>

尝试从该行中删除斜杠“/”:

FROM   TABLE(XMLSequence(Extract(l_xmlType,'KrediBilgi'))) p

你也可以从这样的行中删除第一个斜线

'KrediBilgi/Durum/text()'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 2018-03-20
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2011-02-11
    相关资源
    最近更新 更多