在 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
位于类路径的根目录)
我有转换 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
位于类路径的根目录)