Popularity
4.6
Stable
Activity
0.0
Stable
2
4
3
Monthly Downloads: 18
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
hexml-lens alternatives and similar packages
Based on the "lens" category.
Alternatively, view hexml-lens alternatives based on common mentions on social networks and blogs.
CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
Promo
coderabbit.ai
Do you think we are missing an alternative of hexml-lens or a related project?
Popular Comparisons
README
hexml-lens
Folds and getters for the Hexml Node
type.
{-# LANGUAGE RecordWildCards #-}
import Control.Lens hiding (children)
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy.Char8 as LB
import Network.Wreq
import Text.XML.Hexml
import Text.XML.Hexml.Lens
url :: [Char]
url = "http://aiweb.cs.washington.edu/research/projects/xmltk/xmldata/data/courses/reed.xml"
data Place s = Place { building :: s , room :: Int}
deriving Show
data Course s = Course { title, instructor :: s , place :: Place s}
deriving Show
main :: IO ()
main = do
r <- get url
let stripDocType = LB.unlines . drop 2 . LB.lines
let courses = take 10 $ r ^.. responseBody . to stripDocType . _XML . _children . folded . courseF
print courses
courseF :: Fold Node (Course B.ByteString)
courseF = runFold $ do
title <- Fold $ node "title" . textContents
instructor <- Fold $ node "instructor" . textContents
place <- Fold $ node "place" . placeF
return $ Course{..}
placeF :: Fold Node (Place B.ByteString)
placeF = runFold $ do
building <- Fold $ node "building" . textContents
room <- Fold $ node "room" . textContents . _Show
return (Place building room)