XMLRecordSetWriter Controller Service
描述
将 RecordSet 写入 XML。 这些记录由根标签包裹。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Schema Write Strategy | no-schema |
| 指定记录的模式应如何添加到数据中。 |
| Schema Cache | | 控制器服务 API:RecordSchemaCacheServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定要添加记录模式的模式缓存,以便记录读取器可以快速查找模式。 |
| Schema Reference Writer | | 控制器服务 API:SchemaReferenceWritercn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 负责使用模式参考信息写入 FlowFile 属性或内容头的服务实现 |
| Schema Access Strategy | inherit-record-schema |
| 指定如何获取用于解释数据的架构。 |
| Schema Registry | | 控制器服务 API:SchemaRegistrycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定用于架构Registry的Controller Service |
| Schema Name | ${schema.name} | 指定要在架构Registry属性中查找的架构名称 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Schema Version | | 指定在 Schema Registry 中查找 Schema 的版本。如果未指定,则检索 Schema 的最新版本。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Schema Branch | | 指定在 Schema Registry 属性中查找 Schema 时使用的分支名称。如果选择的 Schema Registry 不支持分支,则此值将被忽略。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Schema Text | ${avro.schema} | Avro 格式的架构文本 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Schema Reference Reader | | 控制器服务 API:SchemaReferenceReadercn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 服务实现负责读取 FlowFile 属性或内容以确定架构参考标识符 |
| Date Format | | 指定读取/写入日期字段时使用的格式。如果未指定,日期字段将被视为自纪元(1970 年 1 月 1 日午夜 GMT)以来的毫秒数。如果指定,值必须匹配 Java java.time.format.DateTimeFormatter 格式(例如,MM/dd/yyyy 表示两位数字的月份,后跟两位数字的日期,后跟四位数字的年份,全部以 '/' 字符分隔,如 01/01/2017)。 | |
| Time Format | | 指定读取/写入时间字段时使用的格式。如果未指定,时间字段将被视为自纪元(1970 年 1 月 1 日午夜 GMT)以来的毫秒数。如果指定,值必须匹配 Java java.time.format.DateTimeFormatter 格式(例如,HH:mm:ss 表示 24 小时格式的两位数字的小时,后跟两位数字的分钟,后跟两位数字的秒,全部以 ':' 字符分隔,如 18:04:15)。 | |
| Timestamp Format | | 指定读取/写入时间戳字段时使用的格式。如果未指定,时间戳字段将被视为自纪元(1970 年 1 月 1 日午夜 GMT)以来的毫秒数。如果指定,值必须匹配 Java java.time.format.DateTimeFormatter 格式(例如,MM/dd/yyyy HH:mm:ss 表示两位数字的月份,后跟两位数字的日期,后跟四位数字的年份,全部以 '/' 字符分隔;然后后跟 24 小时格式的两位数字的小时,后跟两位数字的分钟,后跟两位数字的秒,全部以 ':' 字符分隔,如 01/01/2017 18:04:15)。 | |
| Suppress Null Values | never-suppress |
| 指定编写器应如何处理空字段 |
| Pretty Print XML | false |
| 指定 XML 是否应该被漂亮地打印 |
| Omit XML Declaration | false |
| 指定是否包含 XML 声明 |
| Name of Root Tag | | 指定包装记录集的 XML 根标签名称。如果 Writer 需要在单个 FlowFile 中写入多条记录,则必须定义此属性。 | |
| Name of Record Tag | | 指定 XML 记录标签的名称,用于包装记录字段。如果未设置,Writer 将使用 Schema 中的记录名称。 | |
| Wrap Elements of Arrays | no-wrapping |
| 指定编写器如何包装数组类型字段的元素 |
| 数组标签名 | | 属性 "Wrap Elements of Arrays" 用于写入数组的标签名 | |
| Character Set | UTF-8 | 将数据写入 FlowFile 时使用的字符集 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
提供的 Service API
RecordSetWriterFactory
详细说明
XMLRecordSetWriter
XMLRecordSetWriter Controller Service 把记录对象写出为 XML。必须为该 Controller Service 配置一个描述记录对象结构的 schema。多条记录会被包裹在 一个根节点中,根节点的名称可以通过属性配置。如果未配置根节点,则 Writer 期望每个 FlowFile 只有一条记录(不会被包裹)。由于 Avro 不支持为 记录定义属性(attribute),该 Writer 目前不支持写出 XML 属性。
示例:简单记录
RecordSet (
Record (
Field "name1" = "value1",
Field "name2" = 42
),
Record (
Field "name1" = "value2",
Field "name2" = 84
)
)
该记录可以用以下 schema 描述:
{
"name": "test",
"namespace": "lynxus",
"type": "record",
"fields": [
{
"name": "name1",
"type": "string"
},
{
"name": "name2",
"type": "int"
}
]
}
假设把 "root_name" 配置为根节点的名称、"record_name" 配置为记录节点的 名称,Writer 会写出如下 XML:
<root_name>
<record_name>
<name1>value1</name1>
<name2>42</name2>
</record_name>
<record_name>
<name1>value2</name1>
<name2>84</name2>
</record_name>
</root_name>
该 Writer 还可以配置如何处理记录中的 null 或缺失值:
RecordSet (
Record (
Field "name1" = "value1",
Field "name2" = null
),
Record (
Field "name1" = "value2",
)
)
如果 Writer 配置为总是抑制缺失值或 null 值,XML 中只会出现在名为 "name1" 的字段。如果 Writer 配置为只抑制缺失值,第一条记录中名为 "name2" 的字段 会作为无内容的节点出现在 XML 中。如果 Writer 配置为不抑制任何内容, 两条记录中名为 "name2" 的字段都会作为无内容的节点出现在 XML 中。
示例:数组
该 Writer 还可以配置如何写出数组:
RecordSet (
Record (
Field "name1" = "value1",
Field "array_field" = [ 1, 2, 3 ]
)
)
该记录可以用以下 schema 描述:
{
"name": "test",
"namespace": "lynxus",
"type": "record",
"fields": [
{
"name": "array_field",
"type": {
"type": "array",
"items": int
}
},
{
"name": "name1",
"type": "string"
}
]
}
如果 Writer 配置为不包裹数组,它会把记录转换为如下 XML:
<root_name>
<record_name>
<name1>value1</name1>
<array_field>1</array_field>
<array_field>2</array_field>
<array_field>3</array_field>
</record_name>
</root_name>
如果 Writer 配置为包裹数组、使用字段名作为包裹节点、"elem" 作为元素节点的 标签名,它会把记录转换为如下 XML:
<root_name>
<record_name>
<name1>value1</field2>
<array_field>
<elem>1</elem>
<elem>2</elem>
<elem>3</elem>
</array_field>
</record_name>
</root_name>
如果 Writer 配置为包裹数组、使用 "wrap" 作为包裹节点、字段名作为元素节点的 标签名,它会把记录转换为如下 XML:
<root_name>
<record_name>
<name1>value1</field2>
<wrap>
<array_field>1</array_field>
<array_field>2</array_field>
<array_field>3</array_field>
</wrap>
</record_name>
</root_name>