将 clob 转换为 xml 解析错误

Posted

技术标签:

【中文标题】将 clob 转换为 xml 解析错误【英文标题】:Converting clob to xml parse error 【发布时间】: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也发给你吗? 【参考方案1】:

如果你的xml结构:

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

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

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

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

'KrediBilgi/Durum/text()'

【讨论】:

以上是关于将 clob 转换为 xml 解析错误的主要内容,如果未能解决你的问题,请参考以下文章

xml解析和存储数据

使用 PL/SQL 解析 XML 输出 html 中特定标签的内容

java将字符串转换为xml并解析节点[重复]

Json 解析错误:Java.lang.String 类型的值 <?xml 无法转换为 JSONArray [重复]

解析7000个xml文档的Node / Express致命错误

XmlPullAttributes无法强制转换为XmlBlockParser