有没有办法在JAXB Marshaller和Unmarshaller上注册一些进度监视器? 我想在我的GUI中显示一些进度信息,同时数据被去序列化。
我发现您可以设置Unmarshaller.Listener
和Marshaller.Listener
,其中包含“之前”和“之后”方法。尽管如此,我没有看到任何直接的方法来获得序列化的元素总数。
我显然需要计算一些“完成百分比”信息。
答案 0 :(得分:1)
在解组前解析是否可以?
如果是这样,假设您有一个对象列表,您可以执行类似......
的操作 final String tagName = *** name of tag you are counting ***;
InputStream in = *** stream of your xml ***;
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser = spf.newSAXParser();
final AtomicInteger counter = new AtomicInteger();
saxParser.parse(in, new DefaultHandler() {
@Override
public void startElement (String uri, String localName, String qName, Attributes attributes) {
if (localName.equals(tagName))
counter.incrementAndGet();
}
});