ValidateXml Processor
描述
验证 FlowFile 中包含的 XML。 默认情况下,XML 包含在 FlowFile 内容中。 如果设置了“XML Source Attribute”属性,则要验证的 XML 将包含在指定的属性中。 不建议使用属性来保存大型 XML 文档; 这样做可能会对系统性能产生不利影响。 如果处理器配置了 XSD 架构详细信息,则会执行完整架构验证。 否则,执行的唯一验证是确保 XML 语法正确且格式良好,例如 所有打开标签均已正确关闭。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Schema File | | 用于验证的 XSD 架构文件的文件路径或 URL。 如果此属性为空,则仅验证 XML 语法/结构。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| XML Source Attribute | | 包含要验证的 XML 的属性的名称。 如果此属性为空,则将验证 FlowFile 内容。 支持表达式语言:是(仅使用环境/系统变量求值) |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
invalid | 根据指定架构无效或包含无效 XML 的 FlowFile 将路由到此关系 | 否 |
valid | 根据架构成功验证(如果提供)或验证为格式良好的 XML 的 FlowFile 将路由到此关系 | 否 |
写入的 FlowFile 属性
| 名称 | 描述 |
|---|---|
validatexml.invalid.error | 如果 FlowFile 路由到无效关系,此属性将包含验证导致的错误消息 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
输入要求
该组件要求有传入连接。
系统资源考量
| 资源 | 描述 |
|---|---|
| MEMORY | 虽然此处理器支持处理属性中的 XML,但强烈建议不要在属性中保存大量数据。通常,属性值应尽可能小,不超过几百个字符。 |
详细说明
ValidateXml
使用说明
要完整地校验 XML,必须提供一个 schema。ValidateXML Processor 允许在 'Schema File' 属性中 指定 schema。下面的示例说明 XSD schema 与 XML 数据如何配合工作。
XSD 规范示例
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://namespace/1"
xmlns:tns="http://namespace/1" elementFormDefault="unqualified">
<xs:element name="bundle" type="tns:BundleType"></xs:element>
<xs:complexType name="BundleType">
<xs:sequence>
<xs:element name="node" type="tns:NodeType" maxOccurs="unbounded" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NodeType">
<xs:sequence>
<xs:element name="subNode" type="tns:SubNodeType" maxOccurs="unbounded" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SubNodeType">
<xs:sequence>
<xs:element name="value" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
给定上述 XSD 定义的 schema,以下是合法的 XML 数据。
<ns:bundle xmlns:ns="http://namespace/1">
<node>
<subNode>
<value>Hello</value>
</subNode>
<subNode>
<value>World!</value>
</subNode>
</node>
</ns:bundle>
<ns:bundle xmlns:ns="http://namespace/1">
<node>
<subNode>
<value>Hello World!</value>
</subNode>
</node>
</ns:bundle>
以下是不合法的 XML 数据,同时给出了产生的 validatexml.invalid.error Attribute。
<ns:bundle xmlns:ns="http://namespace/1">
<node>Hello World!</node>
</ns:bundle>
validatexml.invalid.error: cvc-complex-type.2.3: Element 'node' cannot have character \[children\], because the type's content type is element-only.
<ns:bundle xmlns:ns="http://namespace/1">
<node>
<value>Hello World!</value>
</node>
</ns:bundle>
validatexml.invalid.error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'value'. One of '{subNode}' is expected.