このXMLデータ構造を考えると、次の問題があります。
<level1>
<level2ElementTypeA></level2ElementTypeA>
<level2ElementTypeB>
<level3ElementTypeA>String1Ineed<level3ElementTypeB>
</level2ElementTypeB>
...
<level2ElementTypeC>
<level3ElementTypeB attribute1>
<level4ElementTypeA>String2Ineed<level4ElementTypeA>
<level3ElementTypeB>
<level2ElementTypeC>
...
<level2ElementTypeD></level2ElementTypeD>
</level1>
<level1>...</level1>
String1IneedとString2Ineedを含むエンティティを作成する必要があります。
したがって、attribute1に特定の値を持つlevel3ElementTypeBに出くわすたびに、String2Ineedがあります。醜い部分は、現在のlevel2ElementTypeCの上のtypelevel2ElementTypeBの最初の要素にあるString1Ineedを取得する方法です。
私の「命令型」ソリューションは、常にString1Ineedの最後の値を持つ変数を保持し、String2Ineedの基準に達した場合は、それを使用するように見えます。これを単純なコレクション処理の観点から見ると。String1IneedとString2Ineedの間のバックトラッキングロジックをどのようにモデル化しますか?州のモナドを使用していますか?