在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哪个易于处理 并保持)
请告诉我如何接近。
答案 0 :(得分:1)
你提到Rexx和JCL,我会假设这些只是建议而不是要求。
我建议您查看z/OS Unix System Services实用程序以获取解决方案。你提到“巨大的XML”,如果“巨大”意味着“超过32K”那么你可能会发现自己将单行XML写入Unix文件系统中的文件而不是PS数据集。
例如,awk脚本可以执行您想要的操作。
答案 1 :(得分:0)
你应该清楚JCL不是,从来没有,也永远不会是一种编程语言。缩写JCL代表作业控制语言。您可以使用JCL来控制程序的执行,但不能以任何方式使用它来操作数据。它从未被设计成这样做。
答案 2 :(得分: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)。
代码用tab替换所有新行字符,然后删除所有制表符,因为它更容易解析代码。我在rexx中编写了一个kml2csv解析器,可以处理google kmz / kml文件。
OS / 2 Classic REXX实现不包含CHANGESTR。对于大型文件来说,仅限rexx的解决方案非常慢,但是C / C ++ rexx dll很容易编写代码(我为特定目的编写了一个代码),它可以完成大型KML文件的工作。 Regina REXX和新实现包含CHANGESTR函数,但是你需要为“new needle”指定一个参数,即使它是空的。