惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
量子位
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
博客园_首页
D
Docker
博客园 - 叶小钗
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
腾讯CDC
罗磊的独立博客
雷峰网
雷峰网
博客园 - Franky

博客园 - 慕容尘轩

kettle调度系统- XKG-PDI轻松配置对外服务接口 kettle调度系统- XKG-PDI flink cdc kettle调度系统- XKG-PDI添加多数据库支持,mop,达梦,金仓走起 kettle调度系统- XKG-PDI拖拉拽轻松实现DAG,强大到飞起 kettle调度系统- XKG-PDI依赖/依赖链调度使用说明 kettle调度系统- XKG集成Webkettle,kettle脚本在线设计&测试&部署一站式解决方案,全新升级 DataX从入门到精通 第4课 ETL之DataX datax-web单表数据全量+增量同步 DataX从入门到精通 第3课 ETL之DataX datax-web单表数据同步 DataX从入门到精通 第2课 ETL之DataX 安装datax-web DataX从入门到精通 第1课 ETL之DataX 安装DataX kettle插件-excel插件,kettle读取excel动态表头,kettle根据列名读取excel kettle从入门到精通 第119课 ETL之kettle kettle读取excel动态表头,kettle根据列名读取excel kettle从入门到精通 第118课 ETL之kettle,kettle job串行、job并行、 job依赖使用教程 kettle从入门到精通 第116课 ETL之kettle,线上排雷,踩坑复盘 kettle调度系统- XKG集成WebSpoon9.4,kettle脚本在线设计&测试&部署一站式解决方案,持续赋能企业 kettle从入门到精通 第115课 ETL之webspoon 全局异常/错误捕获-续 kettle从入门到精通 第114课 ETL之webspoon 全局异常/错误捕获 kettle从入门到精通 第113课 ETL之webspoon 多行转一行或者多行数据合并为一行 kettle调度系统- 脚本执行错误信息邮件预警,及时发现&解决问题,捍卫生产环境 kettle从入门到精通 第112课 ETL之kettle 数据库资源库,受不了了,逼我出大招 kettle调度系统- kettle数据库资源库,团队协作问题轻松拿捏 kettle调度系统- kettle文件资源库,轻松解决团队协作和脚本版本管理问题 kettle调度系统-1分钟提供接口供外部系统调用,配置简单,快速高效 kettle从入门到精通 第111课 ETL之kettle webspoon7的docker部署详细教程 kettle调度系统-carte集群服务调度,carte集群+算子级集群双集群,涡轮增压,性能拉满,赋能大中型企业 kettle调度系统-carte单体服务调度,支持多kettle版本部署,任务触发毫秒级响应0延迟 kettle从入门到精通 第110课 ETL之kettle webspoon的两种部署方式docker+tomcat使用教程 kettle调度系统-kettle spoon方式调度,强大兼容性,支持各种版本kettle kettle调度系统-kettle嵌入集成方式调度,稳如磐石,一分钟完成任务调度配置 kettle从入门到精通 第109课 ETL之kettle, kettle docker 镜像制作&容器部署
kettle从入门到精通 第117课 ETL之kettle,kettle调用his接口...
慕容尘轩 · 2026-02-12 · via 博客园 - 慕容尘轩

场景:有小伙伴私聊我咨询,使用kettle调用his相关接口时,入参和响应数据均为xml结构报文,无法掉通接口。今天咱们一起来梳理下如何解决这种问题。

1、添加jar文件

1)将staxon-1.3.jar、hutool-all-5.6.0.jar、xiaojingang-https-0.0.1-SNAPSHOT.jar三个jar文件放到kettle的lib目录下。

2)重启spoon。

4a21f29f-d019-4a23-933a-6adb7cd6177a

2、设计转换

1)生成记录,分别设置reqJson和respXml两个字段数据。

2)JavaScript代码,调用jar中的方法进行转换。

3)写日志,打印转换结果。

6562f662-6b4d-4cbf-82a2-1d1cab6033f0

 3、生成记录

6e13ff56-9a4b-4629-b0e6-9d17b6ed4ea7

 reqJson值为json

{
	"Request": {
		"MessageHeader": {
			"Sender": "PIS",
			"Receiver": "OAI",
			"SendTime": "20240816011001",
			"EventType": "MDM_USERS",
			"Msgld": "TEST20241107000001"
		},
		"MessageBody": {
			"WorkDept": "1001231"
		}
	}
}

 respXml

<Response>
    <MessageHeader>
        <Sender>OAI</Sender>
        <Receiver>PIS</Receiver>
        <SendTime>20240816011001</SendTime>
        <EventType>ACK_MDM_USERS</EventType>
        <Msgld>TEST20241107000001</Msgld>
    </MessageHeader>
    <MessageBody>
        <UserList>
            <User>
                <UserId>986306638453809870</UserId>
                <WorkNo>0153</WorkNo>
                <FullName>哈利</FullName>
                <Category>1</Category>
                <CategoryDesc>医院职工</CategoryDesc>
                <WorkDept>1001231</WorkDept>
                <WorkDeptName>病理科</WorkDeptName>
                <JobStatus>1</JobStatus>
                <JobStatusName>在职</JobStatusName>
                <WorkPost>1</WorkPost>
                <WorkPostName>医师</WorkPostName>
                <WorkProfessional>306</WorkProfessional>
                <WorkProfessionalName>副主任医师</WorkProfessionalName>
                <Duty>0</Duty>
                <DutyName>无</DutyName>
                <MplFlag>Y</MplFlag>
                <Mobile>136xxxx1868</Mobile>
                <IdCard>420682xxxxxxxx0024</IdCard>
                <OfficePhone/>
                <Email/>
                <PinyinCode>HH</PinyinCode>
                <WubiCode>AN</WubiCode>
                <ActiveStatus>1</ActiveStatus>
                <ActiveStatusDesc>启用</ActiveStatusDesc>
                <LockStatus>1</LockStatus>
                <LockStatusDesc>正常</LockStatusDesc>
                <HospitalCode>H0000</HospitalCode>
                <NpCode>D420682002681</NpCode>
            </User>
            <User>
                <UserId>271770908087827448</UserId>
                <WorkNo>0467</WorkNo>
                <FullName>波特</FullName>
                <Category>1</Category>
                <CategoryDesc>医院职工</CategoryDesc>
                <WorkDept>1001231</WorkDept>
                <WorkDeptName>病理科</WorkDeptName>
                <JobStatus>1</JobStatus>
                <JobStatusName>在职</JobStatusName>
                <WorkPost>4</WorkPost>
                <WorkPostName>医技</WorkPostName>
                <WorkProfessional/>
                <WorkProfessionalName/>
                <Duty>0</Duty>
                <DutyName>无</DutyName>
                <MplFlag>Y</MplFlag>
                <Mobile>138xxxx8821</Mobile>
                <IdCard>420620xxxxxxxx0017</IdCard>
                <OfficePhone/>
                <Email/>
                <PinyinCode>ZKF</PinyinCode>
                <WubiCode>UDN</WubiCode>
                <ActiveStatus>1</ActiveStatus>
                <ActiveStatusDesc>启用</ActiveStatusDesc>
                <LockStatus>1</LockStatus>
                <LockStatusDesc>正常</LockStatusDesc>
                <HospitalCode>H0000</HospitalCode>
                <NpCode>HJ420682001896</NpCode>
            </User>
        </UserList>
        <Result>
            <Code>CA</Code>
            <Desc>成功</Desc>
        </Result>
    </MessageBody>
</Response>

3、JavaScript代码转换

在javascript代码中调用jar文件中的方法进行转换。

a17f139a-01d9-49c4-b8e3-a0f2eb7ae48a

//Script here

var staxonUtils=new Packages.com.xiaojingang.xiaojingang_https.StaxonUtils();

//将json转换为xml
//var xmlStr = staxonUtils.json2xml(reqJson);
var xmlStr = staxonUtils.json2PrettyXml(reqJson);

xmlStr=xmlStr.replace("<?xml version='1.0'?>",'');
//将xml转换为json
var jsonStr =staxonUtils.xml2json(respXml);

4、运行

58db62f6-68cd-4537-98bb-936848debbcd

 5、完善

解决了xml和json互转难题之后,在加上rest client接口请求步骤即可解决开头说到的问题。

fae735b2-71a6-41b3-91b2-8493aa831b6f

image