2017-03-22 5 views
0

JAXB MarshallerとUnmarshallerに進捗モニタを登録する方法はありますか? データがシリアル化されていない間に、GUIにいくつかの進捗情報を表示したいと思います。JAXBのデシリアライゼーション中に進捗情報を取得

Unmarshaller.ListenerMarshaller.Listenerは「前」と「後」の方法があります。それにもかかわらず、私はシリアライズする要素の総数を得るための直接的な方法はありません。

「パーセント完了」の情報を計算するのは明らかです。

答えて

0

アンマーシャリングする前に解析するのはいいですか?

もしそうなら、あなたがオブジェクトのリストを持っていると仮定すると、あなたは...のような問題を回避する可能性があり

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(); 
     } 
    }); 
+0

を何かをすることができます。どうすれば私のtagNameはxmlツリー内で一意ではありませんか? – kerner1000

+0

次に、1つではなく1組の名前に対してチェックします。 – TedTrippin

関連する問題