【问题标题】:Oracle error when parsing XML data: LPX-00663解析 XML 数据时出现 Oracle 错误:LPX-00663
【发布时间】:2016-10-04 07:19:21
【问题描述】:

我遇到以下错误,谁能帮我解决它。

ORA-31011:XML 解析失败 ORA-19202:错误 发生在 XML 处理支持 LPX-00663:。虚拟机 字符串堆栈溢出

我可以将解决方案视为 在某些网站中增加 XmlXslVMCreate () 中 VM StringStack 的大小床,但没有给出如何操作的步骤。

【问题讨论】:

  • 你想做什么? v_xml := v_xml.transform(v_xsl)
  • 下面的语句抛出错误:SELECT Xmltransform(l_xml_xmltype, l_xslt).getclobval() INTO l_xml_clob FROM dual;
  • 也许您应该显示您的代码(编辑问题并设置格式;不要尝试将所有内容都放在 cmets 中),并在收到此错误时包含您正在使用的变量的示例值。

标签: oracle oracle11g xml-parsing


【解决方案1】:

来自 Oracle 文档。

PL/SQL 包 DBMS_XSLPROCESSOR 提供了一个方便高效的 将单个样式表应用于多个文档的方法。这 此包的性能优于方法 transform(), 因为样式表只解析一次。

我遇到了同样的问题。解决方法是。像这样的。

DECLARE
  v_out_clob       CLOB;
  v_in_xml        XMLTYPE;
  v_in_xsl        XMLTYPE;
  ctx_xslproc     dbms_xslprocessor.processor;
  v_in_xsl_dd       dbms_xmldom.DOMDocument;
  v_in_xml_dd       dbms_xmldom.DOMDocument;
  v_styleshet       dbms_xslprocessor.stylesheet;
BEGIN

   v_in_xml := new xmltype('<?xml version="1.0" encoding="ISO-8859-1"?><document></document>');
  v_in_xsl := new xmltype('<?xml version="1.0" encoding="ISO-8859-1"?>
                                   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                                     <xsl:output method="html" />
                                     <xsl:template match="/">
                                       <html>
                                         <head>
                                           <script type="text/javascript" src="jquery-1.11.1.min.js"></script>
                                         </head>
                                         <body>
                                           <br />
                                         </body>
                                       </html>
                                     </xsl:template>
                                   </xsl:stylesheet>');
  ctx_xslproc   := dbms_xslprocessor.newProcessor;
  v_in_xsl_dd  := dbms_xmldom.newDOMDocument(v_in_xsl);
  v_in_xml_dd  := dbms_xmldom.newDOMDocument(v_in_xml);
  v_styleshet  := dbms_xslprocessor.newStyleSheet(v_in_xsl_dd, NULL);
  dbms_lob.createtemporary(v_out_clob,FALSE);
  dbms_xslprocessor.processXSL(ctx_xslproc,v_styleshet,v_in_xml_dd,v_out_clob);
  dbms_xmldom.freeDocument(v_in_xsl_dd);
  dbms_xmldom.freeDocument(v_in_xml_dd);
  dbms_xslprocessor.freeProcessor(ctx_xslproc);  
  dbms_output.put_line(v_out_clob);

END;

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多