解码 XML

编辑

decode_xml 处理器解码存储在 field 键下的 XML 数据。它将结果输出到 target_field 中。

示例

编辑

此示例演示如何解码包含在 message 字段中的 XML 字符串,并将结果字段写入文档的根目录。任何已存在的字段都将被覆盖。

  - decode_xml:
      field: message
      target_field: ""
      overwrite_keys: true

默认情况下,发生的任何解码错误都会停止处理链,并且该错误将添加到 error.message 字段中。要忽略所有错误并继续执行下一个处理器,请设置 ignore_failure: true。要专门忽略由 field 不存在引起的失败,请设置 ignore_missing: true

  - decode_xml:
      field: example
      target_field: xml
      ignore_missing: true
      ignore_failure: true

默认情况下,从 XML 转换的所有键的名称都将转换为小写。要禁用此行为,请设置 to_lower: false,例如

  - decode_xml:
      field: message
      target_field: xml
      to_lower: false

示例 XML 输入

<catalog>
  <book seq="1">
    <author>William H. Gaddis</author>
    <title>The Recognitions</title>
    <review>One of the great seminal American novels of the 20th century.</review>
  </book>
</catalog>

将产生以下输出

{
	"xml": {
		"catalog": {
			"book": {
				"author": "William H. Gaddis",
				"review": "One of the great seminal American novels of the 20th century.",
				"seq": "1",
				"title": "The Recognitions"
			}
		}
	}
}

配置设置

编辑

Elastic Agent 处理器在摄取管道之前执行,这意味着您的处理器配置不能引用由摄取管道或 Logstash 创建的字段。有关更多限制,请参阅使用处理器有哪些限制?

名称 必需 默认值 描述

field

message

包含 XML 的源字段。

target_field

解码的 XML 将写入的字段。默认情况下,解码的 XML 对象将替换从中读取的字段。要将解码的 XML 字段合并到事件的根目录中,请使用空字符串指定 target_fieldtarget_field: "")。请注意,null 值(target_field:)的处理方式与根本未设置该字段相同。

overwrite_keys

事件中已存在的键是否会被解码的 XML 对象中的键覆盖。

to_lower

是否将所有键转换为小写。

document_id

用作文档 ID 的 XML 键。如果配置,该字段将从原始 XML 文档中删除并存储在 @metadata._id 中。

ignore_missing

如果指定的字段不存在,是否返回错误。

ignore_failure

是否忽略处理器产生的所有错误。

有关支持的条件的列表,请参阅条件