現在、POIを使用してWordドキュメントのバッチからテキストを抽出しようとしていますが、ドキュメントに含まれるエントリを特定できる必要があります。私はドキュメントルートを引っ張って最初のエントリを引っ張っても、すべてのエントリを表示できるようにしたいと思っています。 getEntries()
メソッドはこの機能を提供しているようですが、私はそれらを引き出すためにgetViewableIterator()
を使用する方法については犠牲になっています。以下はPOIでgetViewableIteratorを使用する方法
は、私は、コードごとの持っているものです:最初のループで
<cfset myFile = createObject("java", "java.io.FileInputStream").init(fileInputPath)>
<cfset fileSystem = CreateObject("java", "org.apache.poi.poifs.filesystem.POIFSFileSystem").Init(myFile)>
<cfloop from="1" to="#fileSystem.getRoot().getEntryCount()#" index="i">
<cfset viewableIterator = fileSystem.getRoot().getEntries().next().getViewableIterator()>
<cfset nextEntry = fileSystem.getRoot().getEntries().next()>
<cfif viewableIterator.hasNext()>
<cfdump var="#nextEntry.getShortDescription()#">
<cfset viewableIterator.remove()>
</cfif>
</cfloop>
、私はちょうど罰金最初のエントリを取得することができますよ。しかし、remove()
が実行されるとすぐにjava.lang.IllegalStateException
エラーが発生します。明らかに私はremove()
メソッドを正しく使用していませんが、これを正しく使用する方法の例は見つかりませんでした。どんな助けでも大歓迎です。 、実際には
while(iterator.hasNext()) {
x = iterator.next(); // get element
// do with x what you want
if (/*you want to remove x from the underlying list*/)
iterator.remove();
}
:
私はこれを正しく理解してくださいするには、[OK]を、ループ内のxの各呼び出しで、反復子が自動的にハッシュの次の要素に移動する必要がありますか? (ちなみにXMLは実際にはXMLではなく、ColdFusionのマークアップです) –
はい、next()を呼び出すたびにイテレータは次の要素に移動します。 – mihi
トピックの質問:私は彼に尋ねることができるように受け入れられたが、誰がこの答えをdownvoted見ることができますか? – mihi