在IBM i (OS/400)上如何使用RPG处理XML

作者:佚名 上传时间:2023-04-17 运行软件:ILE RPG 软件版本:IBM i 7.4 版权申诉

此示例代码展示了如何使用RPG在IBM i (OS/400)上处理XML。具体来说,该程序使用ILE RPG中的XML-INTO操作读取XML文件,并使用数据结构对数据进行解析。此功能可用于可扩展标记语言(XML)文件的读取和解析,使其成为数据交换的强大格式。

      **FREE
      /include qsysinc/qrpglesrc,xml
      /include qsysinc/qrpglesrc,xmlparse

      dcl-ds CustomerTemplate qualified;
        CustNo char(5);
        FirstName char(15);
        LastName char(15);
      end-ds;

      dcl-ds CustomersTemplate qualified;
        Customer count(9999) qualified;
      end-ds;

      dcl-pr ProcessXMLTemplate;
        filename char(255) const;
      end-pr;

      dcl-pi ProcessXMLTemplate;
        filename char(255) const;
      end-pi;        

      dcl-s LineNum int(10);
      dcl-s Text char(2048);  

      dcl-ds xmlDoc likeds(XML_DOC);
      dcl-ds xmlDoms likeds(XML_SAX_RT_DOM);

      exec sql set option datfmt=*ISO;

      LineNum = 0;
      xmlDoc.xmldoc = XML_Create_DOM(handler => 'domHandler');
      if xmlDoc.xmldoc = *null;
        exsr cleanup;
        return;
      endif;

      Text = ' ';
      exec sql declare cur cursor for
        select text from myfile order by seq_no;
      exec sql open cur;
      exec sql fetch cur into :Text;

      dow (sqlstate = '00000');
        LineNum = lineNum + 1;
        xmlParse(Text);
        Text = ' ';

        exec sql fetch cur into :Text;
      enddo;

      exec sql close cur;

      if SQLCODE <> 0;
        exsr cleanup;
        return;
      endif;

      //* Process any remaining data
      xmlParse('');

      xmlDoc.xmldoc.XML_free_document();
      return;   

      begsr domHandler; 
        dcl-ds xmlData qualified;
          CustNo char(5);
          FirstName char(15);
          LastName char(15);
        end-ds;
        dcl-ds dsXMLData likeds(xmlData);    

        xmlLoad();
        if xmlDoms.saxrt.app_values.element_name = 'Customers'; 
          CustomersTemplate = dsXMLData.customer;
          eval_line(cl:'Customer:',cn:CustomersTemplate.ds_pos);
        endif;  

        if xmlDoms.saxrt.app_values.element_name = 'Customer'; 
          xmlData = %addr(CustomerTemplate);
          CustomerTemplate = dsXMLData;
          eval_line(cl:'     Cust#:':CustNo);
          eval_line(cl:'First name:':FirstName);
          eval_line(cl:' Last name:':LastName);
        endif;  
      endsr;

      begsr eval_line;
        dcl-pi *n;
          cl char(100);
          cn int(10);
        end-pi;

        dcl-ds lineData likeds(XML_PCDATA);

        lineData = cl;
        XML_Into(value => %addr(lineData),
                 vlen  => %size(lineData),
                 target=> %addr(Text),
                 tvary => *on);

        if lineData.PCDATA <> ' ' and cn <> *zeros;
          // 打印到控制台
          dsply %trimR(lineData.PCDATA);
        endif;
      endsr;

      begsr xmlParse;
        dcl-pi *n;
          XMLText char(2048) const;
        end-pi;
        dcl-s XMLTextLength int(10) based(%size(XMLText));

        XMLTextLength = %len(%trimR(XMLText));
        XML_Parse(xmlDoc.xmldoc:%addr(XMLText):XMLTextLength:0);

        return;
      endsr;

      begsr cleanup;
        if xmlDoc.xmldoc <> *null;
          xmlDoc.xmldoc.XML_free_document();
        endif;

        return;
      endsr;

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
IBM i (OS/400)如何使用RPG处理XML
此示例代码展示了如何使用RPG在IBM i (OS/400)上处理XML。具体来说,该程序使用ILE RPG中的XML-INTO操作读取XML文件,并使用数据结构对数据进行解析。此功能可用于可扩展标记
IBM i 7.4
ILE RPG
2023-04-17 09:12
IBM i (OS/400)使用RPG编程语言(IBM i (OS/400))
IBM i (OS/400)是一种流行的操作系统,广泛用于企业级应用程序的开发和部署。其中,RPG编程语言是一种高级编程语言,适用于开发企业级应用程序。本文将介绍在IBM i (OS/400)上使用R
IBM i (OS/400) V7R4,Rational Developer for i 9.6
Rational Developer for i
2023-04-03 04:01
IBM iOS/400使用RPG编写XML文档生成程序
该示例代码展示了如何在IBM i(OS/400)上使用RPG编写XML文档生成程序。通过使用IBM i(OS/400)自带的XML Toolkit,程序可以生成一个符合XML规范的文档,并将其保存在I
IBM i(OS/400) V7R3
RPG IV
2023-04-29 02:01
IBM i (OS/400) 如何使用 SQL 调用 RPG 程序
本例中展示了如何使用在IBM i系统上使用SQL语句调用RPG程序。RPG程序将被传递变量后,将输出被返回到SQL查询的结果集中。CREATE FUNCTION MY_RPG_FUNCTION (I
IBM i 7.4
IBM RPG编译器
2023-05-24 11:52
IBM iOS / 400使用RPG编写RESTful服务
本示例使用IBM i(OS / 400)上的RPG编写RESTful服务,实现了读取和写入数据的功能。该RESTful服务使用JSON作为数据格式,并可以通过HTTP请求进行访问。/free
IBM i 7.2
IBM RPG IV
2023-04-15 13:52
IBM iOS/400使用RPG编写REST API
本示例展示了如何在IBM i (OS/400)上使用RPG编写REST API。这个示例将使用IBMi的集成web服务来处理REST请求和响应,并使用IREST(IBM的RPG扩展,用于处理REST)
IBM i (OS/400) V7R2M0
IBM Rational Developer for i (RDi)
2023-04-12 19:15
IBM i (OS/400)使用RPG制作RESTful API
这是一篇介绍如何在IBM i (OS/400)上使用RPG制作RESTful API的文章,其中包含示例代码以及解释。dcl-pr MyApp get export;
IBM i (OS/400) V7R4M0
RPG语言
2023-04-30 16:04
如何IBM i (OS/400)运行RPG程序
本文将介绍如何在IBM i (OS/400) 操作系统上运行RPG程序,同时提供一些示例代码和代码释义,以及总结。示例代码以下是一个简单的RPG程序示例: FMyFile IF
7.3
IBM i Access Client Solutions
2023-04-10 00:14
IBM i (OS/400)使用Python调用RPG IV程序
本示例展示了如何在IBM i (OS/400)操作系统上使用Python编程语言调用RPG IV程序。Python是一种流行的高级编程语言,它与IBM i系统平台兼容。RPG IV是一种程序设计语言,
Python 3.7.2, IBM i (OS/400) 7.3
IBM i Access Client Solutions
2023-04-27 04:02
如何IBM i (OS/400)使用Python处理XML文件
本文介绍如何使用Python在IBM i (OS/400)上处理XML文件。实现方式是安装Python并使用ElementTree库,示例代码会读取一个XML文件并打印出其中的某些元素的值。# 导入
IBM i (OS/400) V7R3
Python 3.6.4 on IBM i (OS/400)
2023-04-01 15:45