有没有办法在 JAXB Marshaller 和 Unmarshaller 上注册一些进度监视器? 我想在数据反/序列化时在 GUI 中显示一些进度信息。
我发现您可以设置一个 Unmarshaller.Listener
和 Marshaller.Listener
,它们有一个“before”和“after”方法。尽管如此,我没有看到任何直接的方法来获取要序列化的元素总数。
我显然需要它来计算一些“完成百分比”信息。
最佳答案
在解码之前解析可以吗?
如果是这样,假设您有一个对象列表,您可以执行类似的操作...
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();
}
});
关于java - 获取 JAXB 反/序列化期间的进度信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42949992/