Подтвердите внешний вид элемента XML для alteast 2 раза, используя преобразователь XMLToJAXB в Mule, и подтвердите, что он должен иметь значение

У меня есть классы POJO (созданные xjc с файлом XSD), необходимые для преобразования XML (с элементом (UserField), который должен присутствовать минимум 2 раза ) в объект JAXB в Mule. Но, если я даю ввод XML с присутствием UserField менее 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">[email protected]</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">[email protected]</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>

person Sanni    schedule 26.03.2015    source источник


Ответы (1)


Сначала вам нужно исправить элемент схемы для Record, чтобы добавить отсутствующий атрибут minOccurs:

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

Затем вам нужно использовать фильтр проверки XML перед преобразователем JAX-B:

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

(это предполагает, что userRecords.xsd находится в корне пути к классам)

person David Dossot    schedule 26.03.2015