如何让Castor忽略某些XML字段?



我正在维护一些复杂的Java代码,Castor (v1.2)的解组速度非常慢,因为有相当多的Java对象"丢失"。看,XML包含的字段比我需要的多,但是Castor反复尝试实例化Java对象,导致大量ClassNotFound错误。

蓖麻映射文件:

<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。属性文件,但这并不能阻止它遍历类加载路径并抛出ClassNotFound错误。

如何使Castor跳过不需要的XML元素?

听起来您无法覆盖试图解组每个元素的行为,请参阅Castor参考。您是否测量过真正的性能影响是什么?在Castor开发出更好的重写行为之前,最好忽略它。

如果类没有在映射文件中描述,Castor将使用Java反射API来检查类,以确定是否有任何形式的函数getXxxYyy()/setXxxYyy(x).这个访问器将与名为'xxx-yyy'的XML元素/属性相关联。将来,我们将提供一种方法来覆盖此默认行为。

相关内容

  • 没有找到相关文章