XML handling in REXX or JCL

泪湿孤枕 提交于 2019-12-20 07:43:45

问题


In a PS file I have XML data as below:

For ex:

(<?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>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>

    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>

</welcome-file-list>
</web-app>)

I want data to come into a single line.(without any spaces in between)

So how should i approach? (Rexx or JCL which one will be easy to handle and maintain)

Please tell me how to approach as well.


回答1:


You mention Rexx and JCL, I am going to presume those are merely suggestions and not requirements.

I suggest you look to the z/OS Unix System Services utilities for your solution. You mention "huge XML" and if "huge" means "more than 32K" then you will likely find yourself writing your single line of XML to a file in the Unix file system rather than a PS dataset.

An awk script, for example, could do what you want.




回答2:


You should be clear on the fact that JCL is not, never has been and never will be a programming language. The acronym JCL stands for Job Control Language. You can use JCL to control execution of programs, but you cannot use it to manipulate data in any way. It was never designed to do that.




回答3:


tab = D2C(9)
lf = D2C(10) /* line feed */

/* Remove both tab and new line characters */
input = CHANGESTR( tab, TRANSLATE( input, tab, lf ), '' )
/* or */
input = CHANGESTR( tab, input, '' )
/* to remove only new line characters */

STRIP only remove leading and/or trailing characters.

Use D2C(13)D2C(10) if the file use carriage return line feed instead just line feed.

The code replace all new line characters with tab and then remove all tab characters as it's easier to parse the code then. I've written a kml2csv parser in rexx that can handle google kmz/kml files.

The OS/2 Classic REXX implementation doesn't contain CHANGESTR. A rexx only solution is very slow for large files, but a C/C++ rexx dll is easy to code (I've written one for that specific purpose) that does the job for large KML-files. Regina REXX and new implementations contain a CHANGESTR-function, but you need to specify a parameter for "new needle" even if it is empty.



来源:https://stackoverflow.com/questions/18774208/xml-handling-in-rexx-or-jcl

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!