java - 获取 JAXB 反/序列化期间的进度信息

标签 java xml jaxb

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

我发现您可以设置一个 Unmarshaller.ListenerMarshaller.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/

相关文章:

java - 无法调用 JIBX CodeGen。

java - Java 中的自定义 LinkedList 具有维护的插入顺序

java - 如何以反射方式打印方法主体?

php - 如何使用 YouTube API 获取视频时长?

java - 用于更改类名称的 Jaxb 绑定(bind)不起作用

java - 从 XML 文件读取内容时如何保留 "Character Reference Codes"(<)

java - 验证输入java的最佳实践

java - 我想为 viewpager 页面中的按钮设置一个 onClickListener

sql - 您可以使用 SQL Server 自由文本搜索 XML 文件吗?

java - JAXB:您是否必须指定要包含的每个字段?