我从RESTful web服务得到响应,它可以返回长达300 up的字符串。
当我试图使用JaxB2解压缩时,最多需要12秒
有什么我能做的吗?
public class Convertor{
JAXBContext responseJaxbContext;
public Convertor(){
requestJaxbContext = JAXBContext.newInstance(MyClassResponse.class);
}
public MyClassResponse convertXml(String str) {
MyClassResponse response = null;
try {
Unmarshaller jaxbUnMarshaller = bookingResponseJaxbContext.createUnmarshaller();
StringReader reader = new StringReader(str);
response = (MyClassResponse) jaxbUnMarshaller.unmarshal(reader);
} catch (JAXBException e) {
e.printStackTrace();
}
return response;
}
}更新:使用
jaxbUnMarshaller.setSchema(null);
现在我的解封时间是5-7秒。
发布于 2013-06-25 11:31:53
确保只实例化JAXBContext/您的转换器类一次。
在我的经验中,创建一个JAXBContext是昂贵的。
编辑:但这不是12s的解释,我想.
发布于 2013-06-25 13:30:22
要进行比较,请尝试使用SAX解析器解析XML文档,以计算我们解析XML文档所花费的时间。
import java.io.StringReader;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
public class Demo {
public static void main(String[] args) throws Exception {
String xml; // Your XML
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(true);
SAXParser sp = spf.newSAXParser();
XMLReader xmlReader = sp.getXMLReader();
xmlReader.setContentHandler(new DefaultHandler());
StringReader reader = new StringReader(xml);
InputSource inputSource = new InputSource(reader);
// Profile This
xmlReader.parse(inputSource);
}
}https://stackoverflow.com/questions/17295987
复制相似问题