多层嵌套的XML对ABAP来说,多少有些复杂,但凡有PI系统,也不至于让开发费这么大劲儿。但是保不齐对方的开发是个二把刀,非要你传输一个xml的字符串过去,有PI系统也没法给他mapping。
先看一下下面这个XML的结构,包括HEAD和ITEM两部分,HEAD和ITEM里面的node名称还有相同的,里面的内容还分别包含多层嵌套。具体传输的字段内容是以字段名、字段值的方式传输,这样复杂的XML有没有办法生成呢?
<?xml version="1.0" encoding="UTF-8"?>
<WorkflowRequestInfo>
<requestName>[XX测试流程]</requestName>
<requestLevel>0</requestLevel>
<workflowBaseInfo>
<workflowId>68</workflowId>
<workflowName>XX申请</workflowName>
<workflowTypeName>XX模块</workflowTypeName>
</workflowBaseInfo>
<creatorId>23</creatorId>
<canView>true</canView>
<canEdit>true</canEdit>
<mustInputRemark>false</mustInputRemark>
<needAffirmance>false</needAffirmance>
<workflowMainTableInfo>
<requestRecords>
<weaver.workflow.webservices.WorkflowRequestTableRecord>
<recordOrder>0</recordOrder>
<workflowRequestTableFields>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>SQR</fieldName>
<fieldValue>1</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>SQBM</fieldName>
<fieldValue>221</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>HZLFHZL</fieldName>
<fieldValue>测试数据</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>BZ2</fieldName>
<fieldValue>备注3</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
</workflowRequestTableFields>
</weaver.workflow.webservices.WorkflowRequestTableRecord>
<weaver.workflow.webservices.WorkflowRequestTableRecord>
<recordOrder>1</recordOrder>
<workflowRequestTableFields>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>SQR</fieldName>
<fieldValue>2</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>SQBM</fieldName>
<fieldValue>设备编码</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>HZLFHZL</fieldName>
<fieldValue>测试数据2</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
<weaver.workflow.webservices.WorkflowRequestTableField>
<fieldName>BZ2</fieldName>
<fieldValue>备注23</fieldValue>
<fieldOrder>0</fieldOrder>
<isView>true</isView>
<isEdit>true</isEdit>
<isMand>false</isMand>
</weaver.workflow.webservices.WorkflowRequestTableField>
</workflowRequestTableFields>
</weaver.workflow.webservices.WorkflowRequestTableRecord>
</requestRecords>
</workflowMainTableInfo>