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 - 在当前 Activity 之后开始 Activity

xml - Hive Serde Xpath 提取

html - 用于选择包含® 符号的文本的 XPath?

gwt - POJO 编码器/解码器 : JAX-RS JSON matched with GWT client JSON

spring - @XmlSeeAlso 继承

java - Hibernate - 访问新数据字段时无法解决属性错误

java - 线程中的异常处理

java - 按后退按钮不会关闭 Android 应用程序

android - XmlPullParser - 从具有特定属性值的标签获取数据

xml - JAXB 性能