我正在使用JAXB解析一个非常大的XML文件,其中XMLAdapter用于解组一个特定的“问题”类。 XMLAdapter非常简单,但它被多次调用 - 我们预计单个xml文件最多可达200万次。我们的测试文件较小 - 适配器被称为200,000次 - 但我们注意到性能损失。适配器是相当标准的:
public class MyAdapter extends XmlAdapter<Object, AdaptedClass> {
public static final String ATTRIBUTE_HREF = "href";
public AdaptedClass unmarshal(Object obj) throws Exception {
Element element = null;
if (obj instanceof Element) {
element = (Element)obj;
String id = element.getAttribute(ATTRIBUTE_HREF);
AdaptedClass pr = new AdaptedClass();
pr.setHref(id);
return pr;
}
}
我的问题:使用适配器是否有开销?例如,是否必须从表中查找适配器本身? adatper中的代码可以减慢速度吗?在我的例子中,代码相当简单,因此即使我没有使用适配器,它似乎也会发生一些类似的解组代码。
答案 0 :(得分:1)
注意:我是EclipseLink JAXB (MOXy)负责人,也是JAXB 2(JSR-222)专家组的成员。
使用XmlAdapter
的影响因JAXB实现(Metro,MOXy,Apache JaxMe等)而异,但主要包括以下内容:
XmlAdapter
XmlAdapter
是否已传递到Marshaller
或Unmarshaller
。