如何获取Text.XML.Cursor位置?

时间:2014-04-09 23:54:02

标签: xml haskell

我如何以人类友好的形式show给出光标的路径(例如root.element.childA)?

1 个答案:

答案 0 :(得分:1)

ancestorAxis,它为您提供当前光标的所有祖先列表。 使用游标的node访问器,我们可以在Node构造函数上返回NodeElement和模式匹配,转换为包含show的字符串,并将其打包用intersperse方便的点符号表示。

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 _ = ""