Data Processing, how to approach

2019-08-20 05:14发布

问题:

I have the following Problem, given this XML Datastructure:

<level1>
 <level2ElementTypeA></level2ElementTypeA>
 <level2ElementTypeB>
   <level3ElementTypeA>String1Ineed<level3ElementTypeB>
 </level2ElementTypeB>
 ...
 <level2ElementTypeC>
    <level3ElementTypeB attribute1>
      <level4ElementTypeA>String2Ineed<level4ElementTypeA>
    <level3ElementTypeB>
 <level2ElementTypeC>
 ...
<level2ElementTypeD></level2ElementTypeD>
</level1>
<level1>...</level1>

I need to create an Entity which contain: String1Ineed and String2Ineed.

So every time I came across a level3ElementTypeB with a certain value in attribute1, I have my String2Ineed. The ugly part is how to obtain String1Ineed, which is located in the first element of type level2ElementTypeB above the current level2ElementTypeC.

My 'imperative' solution looks like that that I always keep an variable with the last value of String1Ineed and if I hit criteria for String2Ineed, I simply use that. If we look at this from a plain collection processing point of view. How would you model the backtracking logic between String1Ineed and String2Ineed? Using the State Monad?

回答1:

Isn't this what XPATH is for? You can find String2Ineed and then change the axis to search back for String1Ineed.