解码 XML

编辑

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

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

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

默认情况下,任何解码错误都会停止处理链,并将错误添加到error.message字段。要忽略所有错误并继续到下一个处理器,可以设置ignore_failure: true。要专门忽略由于field不存在而导致的失败,可以设置ignore_missing: true

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

默认情况下,所有从 XML 转换的键名都将转换为小写。如果需要禁用此行为,可以使用以下示例

processors:
  - 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"
			}
		}
	}
}

支持的配置选项如下:

field
(必填) 包含 XML 的源字段。默认为message
target_field
(可选) 将解码的 XML 写入的字段。默认情况下,解码的 XML 对象替换读取它的字段。要将解码的 XML 字段合并到事件的根目录,请使用空字符串指定target_fieldtarget_field: "")。请注意,null值(target_field:)的处理方式与根本未设置该字段相同。
overwrite_keys
(可选) 一个布尔值,指定事件中已存在的键是否会被解码的 XML 对象中的键覆盖。默认值为true
to_lower
(可选) 将所有键转换为小写。接受truefalse。默认值为true
document_id
(可选) 用作文档 ID 的 XML 键。如果已配置,则该字段将从原始 XML 文档中删除,并存储在@metadata._id中。
ignore_missing
(可选) 如果为true,则当指定字段不存在时,处理器不会返回错误。默认为false
ignore_failure
(可选) 忽略处理器产生的所有错误。默认为false

请参阅条件,了解支持的条件列表。