ValidateXml

文档中心 › 组件索引 › ValidateXml

ValidateXml Processor

类型全限定名:cn.org.acal.lynxus.processors.standard.ValidateXml

所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8

描述

验证 FlowFile 中包含的 XML。 默认情况下,XML 包含在 FlowFile 内容中。 如果设置了“XML Source Attribute”属性,则要验证的 XML 将包含在指定的属性中。 不建议使用属性来保存大型 XML 文档; 这样做可能会对系统性能产生不利影响。 如果处理器配置了 XSD 架构详细信息,则会执行完整架构验证。 否则,执行的唯一验证是确保 XML 语法正确且格式良好,例如 所有打开标签均已正确关闭。

标签

xmlschemavalidationxsd

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
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.