百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Kettle(PDI)转换中XML文件输入StAX解析详解

bigegpt 2024-08-28 12:22 3 浏览

概述

XML input stream (StAX)(XML文件输入(StAX解析))步骤使用XML (StAX)解析器流API从XML文件中读取数据。这一步对于快速处理大型和复杂的数据结构是最理想的。与使用内存处理并需要清除部分文件的从XML文件输入步骤不同,XML文件输入(StAX解析)步骤将处理逻辑转移到转换中。该步骤本身提供了原始XML数据流以及其他处理信息。

当您对其他步骤有限制时,或者需要解析XML时,建议使用的是流式传输步骤:

  • 需要与内存无关的快速数据加载,而不管文件大小
  • 需要灵活地以不同的方式读取XML文件的各个部分,并且不希望重复解析该文件。

因为某些XML文件的处理逻辑可能很复杂,所以在使用这个步骤时,应该对现有的Kettle步骤有很好的了解。

选项


XML input stream (StAX)(XML文件输入(StAX解析))步骤有以下选项:

Step name(步骤名称):在画布上指定XML input stream (StAX)(XML文件输入(StAX解析))步骤的唯一名称。您可以自定义名称或将其保留为默认名称。

Filename(文件名):输入XML文件的文件名。通过输入文件名的路径或单击浏览(B)..按钮来指定文件名。如果您连接到XML输入流步骤之前的一个步骤,那么浏览(B)..按钮将被隐藏,文本框将变成一个下拉菜单,其中填充了来自前一个步骤的字段。从下拉菜单中选择一个值作为XML文件的路径。您可以使用内部变量来指定路径。

Source is from a previous step(源来自上一个步骤):接受前面步骤中字段中的数据。

Source field name(源字段名称):从上一步中选择一个字段作为XML数据。

Add filename to result?(将文件名添加到结果中?):通过将XML输入文件的文件名作为每个结果行上的值传递,将处理过的XML文件名添加到此转换的结果中。然后,可以在后续步骤中使用它,希望将文件名用作值。

Skip (Elements/Attributes)(忽略 (Elements/Attributes)):应该跳过的元素或属性的数量。此字段用于在文件中的特定位置开始处理。解析器仍将加载该文件,但不会生成行。

Limit (Elements/Attributes)(限制(Elements/Attributes)):限制要处理的元素或属性的数量使用忽略和限制属性,您可以启用在外部循环中定义的块加载。

Default String Length(默认字符串长度):XML数据名称和值字段的默认字符串长度。

Encoding(编码):以指定的编码方式编码XML文件数据。

Add Namespace information?(添加命名空间信息?):将XML数据类型名称空间添加到数据流中。您可以添加一个可选的前缀(在XML数据名称中定义)和URI信息(在XML数据值中定义)。该选项将元素数据类型中定义的前缀添加到XML数据名称中,例如,prefix:product。由于额外的名称空间处理,此选项降低了处理吞吐量。

Trim strings?(裁剪字符串?):修饰所有名称/值元素和属性。它消除了字符串开头和结尾的空格、制表符、回车符和换行符。

Include filename in output? / Fieldname(输出文件名/字段名):将已处理的文件名添加到指定的字段名。

Row number in output? / Fieldname(输出记录数/字段名):将已处理的行号(从1开始)添加到指定的字段名。

XML data type (numeric) in output? / Fieldname(输出XML数据类型(描述)/字段名):以数字格式将已处理的数据类型添加到指定的字段名。定义了以下数据类型:0 - "UNKNOWN" (保留);1 - "START_ELEMENT";2 - "END_ELEMENT";3 - "PROCESSING_INSTRUCTION" (保留);4 - "CHARACTERS";5 - "COMMENT" (保留);6 - "SPACE" (保留);7 - "START_DOCUMENT";8 - "END_DOCUMENT";9 - "ENTITY_REFERENCE" (保留);10-"ATTRIBUTE";11-"DTD" (保留);12-"CDATA" (保留);13-"NAMESPACE" (When namespace information is selected);14-"NOTATION_DECLARATION" (保留);15-"ENTITY_DECLARATION" (保留)。

XML data type (description) in output? / Fieldname(输出XMl数据类型(描述)/字段名):以文本格式将已处理的数据类型添加到指定的字段名。为了提高转换的可读性,应该使用此选项而不是数字数据类型。有关值的列表,请参阅上面的XML数据类型(数值)描述。由于此选项会导致字符串处理速度变慢和额外的内存消耗,因此建议对大数据加载使用数值数据类型格式。

XML location line in output? / Fieldname:将已处理的源XML位置行添加到指定的字段名。

XML location column in output? / Fieldname:将已处理的源XML位置列添加到指定的字段名。

XML element ID in output? / Fieldname(输出XML element ID?/字段名):将已处理的元素号(从'0'开始)添加到指定的字段名。与添加行号相反,该字段号是按每个新元素的计数递增的,而不是按行号递增。这种编号确保了级别之间的嵌套是正确的。

XML parent element ID in output? / Fieldname(输出XML父 element ID?/字段名):将父元素号添加到指定的字段名。当使用XML element ID和XML父element ID时,可以使用完整的XML元素树供以后使用。

XML element level in output? / Fieldname(输出XML element 层次?/字段名):将已处理的元素级别添加到指定的字段名,从根START_和END_DOCUMENT的“0”开始。

XML path in output? / Fieldname(输出XML 路径?/字段):将处理过的XML路径添加到指定的字段名。

XML parent path in output? / Fieldname(输出XML 父路径?/字段):将已处理的XML父路径添加到指定的字段名。

XML data name in output? / Fieldname(输出XML 数据名称?/字段):将元素、属性和可选名称空间的已处理数据名称添加到指定的字段名称。

XML data value in output? / Fieldname(XML 数据值?/字段):将元素、属性和可选名称空间uri的处理过的数据值添加到指定的字段名。

如果需要设置/重置功能,您可以使用修改后的Java脚本值脚本步骤或用户定义的Java类步骤来创建一个。推荐使用用户定义的Java类步骤,因为它更快。

示例

双击输入中的XML文件输入(StAX解析),添加一个XML文件输入(StAX解析)。


然后双击添加的步骤进行编辑。


接点击浏览,选择文件/data-integration/samples/transformations/files/example.xml。


然后点击预览,预览数据列表。


预览的数据可以作为其他步骤的数据输入流。

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...