一、准备运行环境
1. 安装Node.js(LTS版本,用于搭建轻量转换桥):
- CentOS/RHEL系统执行命令:curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - && yum install -y nodejs
- Windows系统直接下载安装包:https://nodejs.org/dist/v20.10.0/node-v20.10.0-x64.msi,安装时勾选「Add to PATH」
- 验证安装:执行node -v、npm -v,出现版本号说明成功
二、搭建系统兼容转换桥(核心实操)
2.1 创建项目目录与初始化
- 执行命令:mkdir system-bridge && cd system-bridge
- 初始化项目:执行命令:npm init -y
2.2 安装依赖包
执行命令安装所有必要依赖:npm install express xml2js iconv-lite
- express:搭建Web服务接收两个系统的请求
- xml2js:处理XML与JSON格式互转(仲裁系统常用XML,档案系统常用JSON)
- iconv-lite:处理编码转换(避免GBK/UTF8乱码)
2.3 编写转换桥完整代码
新建项目根目录下的index.js文件,写入以下完整可运行代码:
```
const express = require('express');
const xml2js = require('xml2js');
const iconv = require('iconv-lite');
const app = express();
const PORT = 3000;
// 处理编码转换中间件,适配仲裁系统GBK编码
app.use((req, res, next) => {
if (req.headers['content-type']?.includes('text/xml')) {
const buffers = [];
req.on('data', chunk => buffers.push(chunk));
req.on('end', () => {
const gbkBuffer = Buffer.concat(buffers);
req.rawBody = iconv.decode(gbkBuffer, 'gbk');
next();
});
} else {
next();
}
});
// 仲裁系统→档案系统:XML转JSON接口
app.post('/convert/archivedb', async (req, res) => {
try {
const parser = new xml2js.Parser({ explicitArray: false });
const result = await parser.parseStringPromise(req.rawBody);
res.json(result);
} catch (err) {
res.status(500).json({ error: '转换失败', details: err.message });
}
});
// 档案系统→仲裁系统:JSON转XML接口
app.post('/convert/arbiter', (req, res) => {
const builder = new xml2js.Builder();
const xml = builder.buildObject(req.body);
const gbkBuffer = iconv.encode(xml, 'gbk');
res.set('Content-Type', 'text/xml; charset=gbk');
res.send(gbkBuffer);
});
app.listen(PORT, () => {
console.log(`转换桥服务运行在 http://localhost:${PORT}`);
});
```
2.4 配置两个系统调用转换桥
- 仲裁系统调整:原请求地址改为转换桥地址(替换为你的服务器IP):http://你的服务器IP:3000/convert/archivedb,强制设置请求头「Content-Type: text/xml」
- 档案系统调整:原请求地址改为转换桥地址:http://你的服务器IP:3000/convert/arbiter,强制设置请求头「Content-Type: application/json」
三、测试转换桥可用性

1. 启动转换桥服务:在项目目录执行命令:node index.js,出现「转换桥服务运行在 http://localhost:3000」说明正常
2. 仲裁转档案测试:用Postman发送POST请求到转换桥地址,Body选「raw」、类型为「XML」,输入仲裁系统原始XML内容,点击发送,返回JSON格式数据即成功
3. 档案转仲裁测试:用Postman发送POST请求到转换桥地址,Body选「raw」、类型为「JSON」,输入档案系统原始JSON内容,点击发送,返回GBK编码XML数据即成功
四、常见故障排查
- 编码乱码:检查请求头编码,若系统使用GB2312编码,修改代码中
iconv.encode的参数为「gb2312」
- 接口无法访问:执行命令开放防火墙端口:firewall-cmd --add-port=3000/tcp --permanent && firewall-cmd --reload
- XML解析失败:用在线工具校验XML语法:https://www.xmlvalidation.com,修正未闭合标签等错误