2012-09-17 2 views
0

I이 XML 자료 구조를 주어진 다음과 같은 문제 가지고 : String1Ineed 및 String2Ineed :데이터 처리, 어떻게 접근하는

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

내가이 포함 된 엔티티를 생성해야합니다.

그래서 attribute3의 특정 값으로 level3ElementTypeB를 발견 할 때마다 String2Ineed를 갖게되었습니다. 추악한 부분은 현재 level2ElementTypeC 위에 level2ElementTypeB 유형의 첫 번째 요소에있는 String1Ineed를 얻는 방법입니다.

내 '필수'솔루션은 항상 String1Ineed의 마지막 값으로 변수를 유지하고 String2Ineed에 대한 조건을 충족하면 간단하게 사용합니다. 우리가 평범한 컬렉션 처리 관점에서 이것을 보면. String1Ineed와 String2Ineed 사이의 백 트랙킹 로직을 어떻게 모델링 하시겠습니까? State Monad 사용?

+0

특정 기능 언어를 사용하고 있습니까? 아니면 일반적인 질문입니까? – pat

답변

1

XPATH는 무엇입니까? String2Ineed를 찾은 다음 String1Ineed를 다시 검색 할 축을 변경할 수 있습니다.

+0

levelElementType에 주목 했습니까? 2Ineed 문자열을 쉽게 찾을 수 있지만 이전 요소도 필요합니다. 지퍼가 도움이 될지도 모른다 – AndreasScheinert

+0

그래, 나는 이것을보고 나서 지난 밤에'Data.Tree'를위한 지퍼를 썼다. 여전히, 나는 XPATH에 문제가 보이지 않는다. 여기에는 매우 유연한 축 지정자 세트가있어 주어진 지점에서 뒤로 검색 할 수 있습니다. – pat