在JAXB de- / serialization

时间:2017-03-22 11:11:56

标签: java xml jaxb

有没有办法在JAXB Marshaller和Unmarshaller上注册一些进度监视器? 我想在我的GUI中显示一些进度信息,同时数据被去序列化。

我发现您可以设置Unmarshaller.ListenerMarshaller.Listener,其中包含“之前”和“之后”方法。尽管如此,我没有看到任何直接的方法来获得序列化的元素总数。

我显然需要计算一些“完成百分比”信息。

1 个答案:

答案 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();
        }
    });