Как заставить Castor игнорировать определенные поля XML? - PullRequest
4 голосов
/ 18 октября 2011

Я поддерживаю некоторый сложный код Java, и демонтирование Castor (v1.2) происходит очень медленно из-за большого количества «отсутствующих» объектов Java. Видите, XML содержит больше полей, чем мне нужно, но Кастор неоднократно пытается создать экземпляры объектов Java, вызывая множество ошибок ClassNotFound.

Файл отображения Castor:

<mapping>
  <class name="com.example.imaging.product.Product">
    <map-to xml="product"/>
    <field name="productId" type="long">
      <bind-xml name="id" node="attribute"/>
    </field>
  </class>

  <class name="com.example.imaging.product.RegionConfiguration">
    <map-to xml="mediaConfiguration"/>
    <field name="name" type="string">
      <bind-xml name="name" node="attribute"/>
    </field>
    <field name="design" type="int">
      <bind-xml name="designId" node="attribute"/>
    </field>
  </class>
</mapping>

Источник XML:

<?xml version="1.0"?>
<product id="1234">
  <productImage colorId="1"/>
  <mediaConfiguration name="Front" designId="98765" />
  <color id="1" name="Red" default="true"/>
</product>

Моя проблема в том, что поле color не имеет Java-эквивалента, и я не хочу, чтобы оно было разобрано. Я попытался установить org.exolab.castor.xml.strictelements=false в файле castor.properties, но это не мешает ему идти по пути загрузки классов и выдавать ошибки ClassNotFound.

Как заставить Кастор пропускать ненужные элементы XML?

1 Ответ

0 голосов
/ 04 апреля 2012

Звучит так, как будто вы не можете отменить поведение при попытке демаршировать каждый элемент, см. ссылка на Castor . Вы измерили, каково реальное влияние на производительность? Лучше всего просто игнорировать это, пока у Кастора не появится лучшее поведение переопределения.

Если класс не описан в файле сопоставления, Castor проанализирует класс с помощью Java Reflection API, чтобы определить, есть ли какая-либо функция вида getXxxYyy () / setXxxYyy (x). Этот метод доступа будет связан с элементом / атрибутом XML с именем «xxx-yyy». В будущем мы предоставим способ переопределить это поведение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...