Java 在JAXB反序列化/序列化期间获取进度信息

Java 在JAXB反序列化/序列化期间获取进度信息,java,xml,jaxb,Java,Xml,Jaxb,有没有办法在JAXB Marshaller和Unmarshaller上注册一些进度监视器? 我想在数据反序列化时在GUI中显示一些进度信息 我发现您可以设置解组器.Listener和封送器.Listener,它们有一个“before”和“after”方法。然而,我看不到任何直接的方法来获取要序列化的元素总数 显然,我需要它来计算一些“完成百分比”信息。在解组之前可以解析吗 如果是这样的话,假设你有一个对象列表,你可以做一些像 final String tagName = *** name

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

我发现您可以设置
解组器.Listener
封送器.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();
        }
    });

这可能是一个解决办法。我该怎么办?我的标记名在xml树中不是唯一的?然后对照一组名称而不是单个名称进行检查。编组是否类似?