REXX和JCL中的XML处理

时间:2013-09-13 13:16:35

标签: xml jcl rexx

我的PS数据集中有XML数据,如下所示,它与我PS中的格式相同,下面是示例:

(**<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>onlinerecharge</display-name>
<filter>
    <filter-name>struts2</filter-name>`enter code here`
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>**)

我想要的是我希望整个XML在一行中没有任何中断,我只需要在大型机上执行该操作。 我们有什么办法在REXX或JCL中做到这一点,我希望我的输出就像在PS中一样:

http://www.w3.org ......等等

1 个答案:

答案 0 :(得分:1)

这似乎是一个奇怪的要求。 XML文档往往相当“长”,因此输出记录长度至少需要与您要处理的最大XML文档一样长。在我认为你将运行的IBM z / os下,PS记录大小有32K的限制。请注意这个限制。

无论如何,请尝试以下REXX执行。更改ALLOCATED数据集名称(HLQ.XML.INHLQ.XML.OUT)以满足您的需要,它将连接输入数据集中的所有记录 将其写入单个记录并将其写入输出数据集。

/* REXX */  
'ALLOCATE DA(''HLQ.XML.IN'') F(XMLIN) SHR'  
'ALLOCATE DA(''HLQ.XML.OUT'') F(XMLOUT) OLD'  
'EXECIO * DISKR XMLIN(FINIS STEM REC.'  
XOUT = ''  
DO I = 1 TO REC.0    
  XOUT = XOUT || STRIP(REC.I)  
END  
QUEUE XOUT  
'EXECIO * DISKW XMLOUT(FINIS'  
'FREE DDNAME(XMLIN)'  
'FREE DDNAME(XMLOUT)'  
RETURN  

注意:输出数据集需要在运行此exec之前创建,否则只需更改ALLOCATE语句,使用您需要的任何数据集属性创建它。