如何获取我收到的XML中的特定元素(来自第三方)?

时间:2017-08-28 07:32:02

标签: xml ibm-midrange rpgle

我有一个XML响应,我收到它作为系统链接(Infor XA相关)过程的输出。回复如下所示:

 **<?xml version="1.0" encoding="UTF-8"?>
    -<System-Link hostVersion="1.0" version="1.0">
    -<Response hasWarnings="false" hasErrors="true" systemTimeZoneOffset="-5:00" 
    systemTimestamp="2017-08-22 03:37:01.115" 
    workHandle="-1e4c99eb:15dff5e8e61:-796d" 
    sessionHandle="-1e4c99eb:15dff5e8e61:-7970">
    -<UpdateResponse actionSucceeded="false" 
    requestedDomainClass="com.mapics.epdm.BillOfMaterialComponent" 
    name="updateObject_BillofMaterial Component_1">
    -<Exception name="com.pjx.eScript.ObjectNotFoundException">
    -<Text>
    <![CDATA[Object does not exist]]>
    </Text>
    -<Message type="error">
    -<Text>
    <![CDATA[The named object was not found.]]>  
    </Text>
    </Message>
    </Exception>
    </UpdateResponse>
    <UpdateResponse actionSucceeded="true" 
    requestedDomainClass="com.mapics.epdm.BillOfMaterialComponent" 
    name="updateObject_BillofMaterial Component_2"/>
    <UpdateResponse actionSucceeded="true" 
    requestedDomainClass="com.mapics.epdm.BillOfMaterialComponent" 
    name="updateObject_BillofMaterial Component_3"/>
    <UpdateResponse actionSucceeded="true" 
    requestedDomainClass="com.mapics.epdm.BillOfMaterialComponent" 
    name="updateObject_BillofMaterial Component_4"/>
    <UpdateResponse actionSucceeded="true" 
    requestedDomainClass="com.mapics.epdm.BillOfMaterialComponent" 
    name="updateObject_BillofMaterial Component_5"/>
    </Response>
    </System-Link>**

所以我需要获得所有响应的'actionSucceeded'值(这将在一个事务中)。如果它是假的,那么我想得到。是否有RPG XML函数来实现这一目标?基本上我需要通过检查响应(如上所示)而不是扫描整个请求来知道我的请求是否成功

1 个答案:

答案 0 :(得分:2)

使用操作码XML-SAX解析xml文档。有关操作码的更多信息,请参阅IBM Knowledge Center https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzasd/zzxmlsa.htm

我使用XML-SAX解析我的一个项目中的xml文档(配置文件),请参阅BlueDroplet XML Configuration Provider

我的观点:当你的主代码库已经是RPG时,不要将Java用于你可以在RPG中轻松做的任何事情。