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

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
博客园_首页
量子位
Jina AI
Jina AI
S
SegmentFault 最新的问题
IT之家
IT之家
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
S
Securelist
Google Online Security Blog
Google Online Security Blog
P
Privacy International News Feed
博客园 - Franky
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
C
Cisco Blogs
V
Vulnerabilities – Threatpost
腾讯CDC
The Hacker News
The Hacker News
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
Scott Helme
Scott Helme
B
Blog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客园 - 慕容尘轩

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接口,入参和响应数据均为xml结构
慕容尘轩 · 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