2014-04-09 3 views

답변

1

ancestor은 현재 커서의 모든 조상 목록을 제공하는 Axis입니다. 커서의 접근자인 node을 사용하여 NodeElement 생성자에서 show으로 문자열로 변환하고 intersperse으로 편리한 점 표기법으로 모두 패킹하여 Node 및 패턴 일치를 다시 얻을 수 있습니다.

import Data.List (intersperse) 
import Text.XML (Node(elementName)) 
import Text.XML.Cursor (Cursor(node), ancestor) 

prettyCursor :: Cursor node -> String 
prettyCursor = intersperse "." . filter (not.null) . map (elemname.node) . ancestor 
    where 
    elemname (NodeElement Element{ elementName = e }) = show e 
    elemname _ = "" 
+0

'Text.XML.Cursor.Generic'에 대한 의견을 통해 답변을 확장 할 수 있습니까? 귀하의 대답은 정확하지만 원래의 문제는'Text.XML.Cursor'를 해체하는 데있었습니다. – Rumca

+0

오랜 시간이 걸려서 죄송합니다. 'Text.XML.Cursor.Generic '의 이유는'Text.XML.Cursor'에있는 대부분의 것들이이 패키지에서 단순히 재사용된다는 것입니다. 따라서'Text.XML.Cursor.Generic'은 내가 어디에 있었는지입니다. 작동하는 유형 및 기능을 추적 할 때 찾고 있습니다. 가져 오기 이름을'Text.XML.Cursor'로 변경하는 것은 기능상으로 동일하며 내 대답을 업데이트했습니다. – Thomas