kettle从入门到精通 第八十四课 ETL之kettle kettle中Get data from XML使用实战教程

news2024/11/22 15:33:02

场景:解析xml文件或者内容解析出其中某些字段。

 本来想着这个步骤使用起来比较简单,就没有梳理成文,结果群里的小伙伴为了使用这个步骤折腾了一下午。故有了此文。

在开始学习之前我们一起来学习下xml命名空间的相关知识,为下文展开做基础铺垫。

1、xml命名空间

XML 的命名空间(namespace)是为了解决在 XML 文档中使用相同元素或属性名称时可能出现的冲突问题。它提供了一种机制来区分和唯一标识不同来源的元素和属性,从而避免命名冲突。

文档1(未使用命名空间)

<book>
    <title>Introduction to XML</title>
    <value>123</value>
</book>

文档2(未使用命名空间)

<product>
    <name>XML Book</name>
    <value>$50</value>
</product>

在文档1和文档2中,<value> 元素在两个文档中都有定义,但它们的含义是不同的。在没有命名空间的情况下,如果你尝试将这两个文档合并,或者在处理它们时可能会遇到冲突,因为 <value> 元素的上下文不明确。

文档1(使用命名空间)

<book xmlns:bk="http://www.example.com/book">
    <bk:title>Introduction to XML</bk:title>
    <bk:value>123</bk:value>
</book>

文档2(使用命名空间)

<product xmlns:pr="http://www.example.com/product">
    <pr:name>XML Book</pr:name>
    <pr:value>$50</pr:value>
</product>

在这些文档中,bk:value 和 pr:value 具有不同的命名空间,因此它们是完全不同的元素,即使它们的本地名称相同。这样就避免了名称冲突,并且每个元素的含义都被明确标识。

2、了解了xml命名空间的作用,我们言归正传,继续学习如何使用Get data from XML步骤。xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header/>
<soapenv:Body>
<ns:loginResponse xmlns:ns="http://webservice.zhending.com">
<ns:return>{"result":"success","data":{"inputOrganCode":"aaa","inputOrganName":"bbbb","userIdcard":"cccc","userName":"ddd","token":"eeee"},"message":"操作成功"}</ns:return>
</ns:loginResponse>
</soapenv:Body>
</soapenv:Envelope>

3、拖动步骤【Get data from XML】、【写日志】两个步骤到画布中并连线,如下图所示:

 4、按照下图所示,点击按钮【浏览】选中文件demo.xml,然后点击按钮【增加】

 5、点击最下面的按钮【预览】,弹出提示要设置开始循环的xmlpath。

 6、切换到内容tab,点击按钮【获取XML文档的所有路径】,弹窗会列出xml文件中的所有path,我们根据自己的要求选择一个path,这里我们选择第一个根path。

 7、设置循环读取路径,切换到字段tab我们继续设置要提取的字段。这里直接点击按钮【获取字段】即可自动填充xml文件中的字段,可以根据填充的内容以及自己的实际应用场景进行微调。

 8、保存&运行,运行报错,如下图所示:

错误信息:

Exception occurred evaluting XPath: soapenv:Body/ns:loginResponse/ns:return. Exception: XPath expression uses unbound namespace prefix ns。

错误信息翻译:

异常发生在评估 XPath 时:soapenv:Body/ns:loginResponse/ns:return。异常:XPath 表达式使用了未绑定的命名空间前缀 ns。

9、kettle如果连命名空间都处理不了那就太弱了,继续寻找配置参数。切换到内容tab,将考虑命名空间勾选。保存&运行,转换正常运行。如下图所示:

注意:若xml文件内容或者xml文本没有使用命名空间的话就不用勾选此参数。

 10、上面的例子只是解决了从xml文件中读取,稍加改造支持从前置步骤读取xml文本内容。本次示例通过步骤【生成记录】生成xmlCont字段,当然也可以来源于http/https结果字段等,如下图所示:

11、根据下图所示,勾选参数XML源定义在一个字段里和选择XML源字段名,其他保持不变。保存&运行,转换可以正确运行。

 12、这里如果是xml文本,依然可以使用步骤自动生成xmlpath,切换到字段tab,点击按钮获取字段,将xml文本粘贴到文本框&然后点击确定即可自动填充xmlpath。如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rem适配与vw适配

rem适配与vw适配 1.rem适配1.1原理1.2步骤1.3.1技术方案一1.3.2技术方案二 2.vw适配2.1原理2.2计算 3.rem适配与vw适配的优缺点 1.rem适配 1.1原理 rem&#xff08;根em&#xff09;是基于根元素&#xff08;即HTML元素&#xff09;的字体大小的长度单位。当根元素的字体大小…

【数据结构与算法】链栈(恋战)

链栈 一.链栈的原理二.结构三.初始化四.是否为空或满1.空2.满 五.入栈六.遍历栈七.出栈八.获取栈顶元素 一.链栈的原理 我们上节课用的数组来实现,现在我们用链式存储来实现,其实跟链队列基本一样,只不过是出栈的位置不一样而已. 二.结构 用一个头来当栈,每个节点作为链子. …

独角数卡支付后显示待支付问题

我这边碰到的是因为上线前测试未修改&#xff0c;看图片&#xff1a; 希望对你有帮助

Github零成本部署网站

网站的意义 网站是互联网上的信息平台&#xff0c;用于发布和交流内容。它们提供了从教育资料到商业服务等各种信息和服务。对企业和个人而言&#xff0c;网站是展示形象、沟通用户的重要渠道&#xff0c;有助于提升品牌认知度和促进业务发展。随着移动技术的进步&#xff0c;…

Linux 系统控制器助力包装灌装旋盖机实现智能控制

在包装行业中&#xff0c;灌装旋盖机是一种重要的设备&#xff0c;用于完成液体或粉体的灌装和旋盖操作。随着工业自动化和智能化的发展&#xff0c;对包装灌装旋盖机的智能控制要求越来越高。ARMxy 工业计算机作为一种高性能、高可靠性的嵌入式计算平台&#xff0c;为包装灌装…

Gradle出现Re-download dependencies and sync project (requires network)

distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zip改为 distributionUrlhttps://services.gradle.org/distributions/gradle-7.5-bin.zip 然后把目录下已生成的文件夹删掉&#xff0c;此例为下图的gradle-7.5-bin删除&#xff0c;然后sync就可以…

PXE安装部署教程

打开rhel-7.9的虚拟机 关闭虚拟机DHCP服务 yum group install "server with GUI" init 5开启图形界面 安装并部署kickstart 下载生成kickstart工具&#xff1a;yum install system-config-kickstart -y 启动图形制作工具&#xff1a;system-config-kickstart [ro…

C#MQTT协议应用

1 &#xff0c;MQTT介绍&#xff1a;MQTT详解以及实际操作_mqtt使用-CSDN博客 2&#xff0c;MQTT应用&#xff1a; C#MQTT编程06--MQTT服务器和客户端(winform版)_c# mqtt服务器-CSDN博客 3&#xff0c;MQTT实例&#xff1a; 效果 代码&#xff1a; 服务端 public parti…

亚马逊ERP全功能支持企业贴牌独立部署,可对外销售

亚马逊全功能 ERP&#xff01; 1. 对于亚马逊企业来说需要一款选品、财务管理、部署等为一体的性价比高的 ERP&#xff0c;而这款 ERP 功能齐全且性价比高。 2. 其铺货、采集、选品支持国内淘宝、拼多多、1688 等&#xff0c;以及国外亚马逊、速卖通等所有热门平台采集。采集…

壁纸头像小程序uniapp版(附源码)

壁纸头像类小程序是最热门的小程序类型之一&#xff0c;也是个人开通流量主的最佳选择。 技术栈 uniApp UniCloud Vue 功能 隐私授权 壁纸列表 壁纸预览 头像列表 图片下载到本地相册 流量主 banner、激励、插屏 技术功能 微信隐私保护指引 图片下载到本地相册 自定义头部组件…

洗地机哪个牌子好?分享四款口碑最好的洗地机

随着现代家居生活节奏的加快&#xff0c;洗地机作为家庭清洁的得力助手&#xff0c;其重要性日益凸显。市面上洗地机品牌繁多&#xff0c;如何选择一款性价比高、口碑良好的洗地机成为了消费者关注的焦点。本文将为大家精心挑选并分享四款备受好评的洗地机品牌及型号&#xff0…

11万条心理健康问答ACCESS\EXCEL数据库

今天从一个心理健康知识网站采集了11万多条的心理健康问答文章内容&#xff0c;感觉非常适用于心理健康、心理测试类产品的附加项&#xff0c;数据量很多正好提供各类关键词的搜索。 数据仅提供Microsoft Office Access数据库&#xff0c;扩展名是MDB。 MDB文件大小有350M左右&…

Python处理异常用操作笔记

在编写Python程序时&#xff0c;我们经常会遇到各种异常、错误等。对于异常处理的常用操作&#xff0c;记录如下&#xff1a; 1、try-except try-except语句是Python中最常用的异常处理结构。它的基本语法如下&#xff1a; try:# 尝试执行的代码块 except ExceptionType:# 当发…

多人在线像素涂鸦网页源码

多人在线像素涂鸦网页源码node.js项目&#xff0c;100100的像素格画布&#xff0c;可供多人在线涂鸦&#xff0c;画布内容实时刷新。 源码下载:多人在线像素涂鸦网页源码.zip 包含完整搭建教程 仍有不完善的地方&#xff1a; 1.没有限制一分钟内的涂鸦次数&#xff0c;这会…

大模型日报|20 篇必读的大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.智谱AI 发布视频大模型 CogVideoX 技术报告 Sora 发布近半年之后&#xff0c;业内仍未出现一个开源的、满足商业级应用需求的视频生成模型。 今天&#xff0c;智谱AI 便推出了首个开源的商用级视频生成模型——Co…

Ubuntu 20.04 中安装 Nginx (通过传包编译的方式)、开启关闭防火墙、开放端口号

文章目录 前言一、安装包下载二、上传服务器并解压缩三、依赖配置安装四、生成编译脚本五、编译六、查看是否编译完成七、开始安装八、查看是否安装成功九、设置为开机自启动 前言 参考大佬文章并在基础上做了点修改&#xff0c;发篇文章记录下 防止下次遇到。 参考文章&#…

软件设计之CSS

软件设计之CSS 【狂神说Java】CSS3最新教程快速入门通俗易懂 学习内容&#xff1a; 软件开发技能点参照&#xff1a;软件开发&#xff0c;小白变大佬&#xff0c;这套学习路线让你少走弯路是认真的&#xff0c;欢迎讨论 软件开发技能点顺序参照&#xff1a;Java学习完整路线…

【Java】多线程精简笔记

进程和线程 进程是系统资源分配的基本单位&#xff0c;线程是系统调度的基本单位进程是程序正在运行的实例&#xff0c;里面包含着线程进程有独立的内存和资源&#xff0c;线程共用内存&#xff08;工作内存独有&#xff0c;主内存共用&#xff09;和资源线程比进程更加轻量&am…

Ubuntu防火墙相关命令

在Ubuntu系统中&#xff0c;启用防火墙可以通过ufw&#xff08;Uncomplicated Firewall&#xff09;来完成。以下是如何启用和配置ufw的步骤&#xff1a; 1.安装ufw&#xff08;如果尚未安装&#xff09; sudo apt update sudo apt install ufw2Ubuntu启用防火墙ufw&#xff1…

代码签名证书申请教程

代码签名证书的申请流程可以概括为以下几个步骤&#xff0c;这些步骤是目前可申请代码签名证书的几个云服务厂商的大致流程&#xff1a; 首先了解一下代码签名证书的种类&#xff1a; 标准代码签名证书&#xff08;一般泛指OV代码签名证书&#xff09;&#xff1a;适用于个人…