在 Mule 中使用 XMLTo JAXB 转换器验证 XML 元素外观至少 2 次并验证必须具有值

Validate XML element appearance for alteast 2 times using XMLToJAXB transformer in Mule and validate to must have value

我有转换 XML(带有一个元素(UserField)应该至少出现 2 次)到 Mule 中的 JAXB 对象中。但是,如果我在 UserField 存在的情况下给出 XML 输入少于 2 次,那么 XMLToJAXB 转换器仍然在创建它的对象,而我希望那里有一些异常或错误。还有一件事是我如何验证 UserField 必须具有使用 XML 模式的价值。

XML 和 XSD 文件如下:

userRecords.xml_____________________________________________________

<?xml version='1.0' encoding='UTF-8'?>
<Records>
    <Record>
        <UserField  name="username">arungupta</UserField>
        <UserField  name="email">arun@rediff.com</UserField>
    </Record>    
    <Record>
        <UserField  name="username">RahulKumar</UserField>
        <UserField  name="first name">Rahul</UserField>
        <UserField  name="last name">Kumar</UserField>
        <UserField  name="age">25</UserField>
        <UserField  name="email">rahul@gmail.com</UserField>
    </Record>    
</Records>

userRecords.xsd_____________________________________________________________

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="Records">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Record"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Record">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="UserField"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UserField">
    <xs:complexType mixed="true">
      <xs:attribute name="name" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

您需要先修复 Record 的架构元素以添加缺少的 minOccurs 属性:

<xs:element minOccurs="2"
            maxOccurs="unbounded"
            ref="UserField"/>

那么你需要在 JAX-B 转换器之前使用 XML 验证过滤器:

<mule-xml:schema-validation-filter schemaLocations="userRecords.xsd"/>

(假设 userRecords.xsd 位于类路径的根目录)