-1

在 PS 文件中,我有如下 XML 数据:

例如:

(<?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>)

我希望数据进入一行。(中间没有任何空格)

那么我应该如何处理呢?(Rexx 或 JCL 哪一个易于处理和维护)

请告诉我如何接近。

4

3 回答 3

1

您提到 Rexx 和 JCL,我认为这些只是建议而不是要求。

我建议您使用z/OS Unix System Services实用程序来解决您的问题。您提到“巨大的 XML”,如果“巨大”的意思是“超过 32K”,那么您可能会发现自己将单行 XML 写入 Unix 文件系统中的文件而不是 PS 数据集。

例如,一个awk脚本可以做你想做的事。

于 2013-09-13T11:53:18.800 回答
0
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 仅删除前导和/或尾随字符。

如果文件使用回车换行而不是换行,则使用 D2C(13)D2C(10)。

代码用制表符替换所有换行符,然后删除所有制表符,因为这样更容易解析代码。我在 rexx 中编写了一个 kml2csv 解析器,可以处理 google kmz/kml 文件。

OS/2 Classic REXX 实现不包含 CHANGESTR。仅 rexx 的解决方案对于大文件来说非常慢,但是 C/C++ rexx dll 很容易编码(我已经为此特定目的编写了一个),它可以为大型 KML 文件完成工作。Regina REXX 和新的实现包含一个 CHANGESTR 函数,但您需要为“新针”指定一个参数,即使它是空的。

于 2016-04-18T10:11:07.303 回答
0

您应该清楚 JCL 不是、从来不是、也永远不会是一种编程语言这一事实​​。首字母缩略词 JCL 代表作业控制语言。您可以使用 JCL 控制程序的执行,但不能使用它以任何方式操作数据。它从未被设计为这样做。

于 2015-11-29T11:22:36.827 回答