Возможно ли проверить маршаллированный jaxb pojo против xsd частично? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть огромное pojo, сгенерированное из xsd с использованием jaxb. Я разделил его на «дочерние объекты», чтобы инициализировать и маршалировать их параллельно. Как я могу проверить дочерние pojos по существующим xsd?

Вот мой пример xsd:

<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid XML Studio - FREE Community Edition 7.0.2.746 (http://www.liquid-technologies.com)-->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Company">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="Address">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="City" type="xs:string" />
              <xs:element minOccurs="0" name="PostalCode" type="xs:string" />
              <xs:element minOccurs="0" name="Country" type="xs:string" />
              <xs:element minOccurs="0" name="AddressType" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" name="Contact">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="ContactPerson">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="0" name="FirstName" type="xs:string" />
                    <xs:element minOccurs="0" name="LastName" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element minOccurs="0" name="Telephone" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" name="TaxRegistration">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="TaxRegistrationNumber" type="xs:string" />
              <xs:element minOccurs="0" name="TaxType" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" name="BankAccount">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="IBANNumber" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Вот пример моих ожиданий:

List<Object> innerPojos = getInnerPojos(new Comany());
for (Object object : innerPojos) {
     init(object);
     validate(object); // <-- Validates inner object which representing part of xml
     marshall(object, destinationFilePath);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...