-- | Minimal XML functionality needed to parse each document's -- XML_File_ID. -- module TSN.Xml ( parse_xmlfid, xml_prologue ) where import Data.Maybe (listToMaybe, mapMaybe) import Text.Read (readMaybe) import Text.XML.HXT.Core ( (>>>), (/>), getChildren, getText, hasName, runLA, xreadDoc ) -- | A tiny parser written in HXT to extract the "XML_File_ID" element -- from a document. parse_xmlfid :: String -> Maybe Integer parse_xmlfid = listToMaybe . mapMaybe readMaybe . parse where parse :: String -> [String] parse = runLA (xreadDoc >>> hasName "message" /> hasName "XML_File_ID" >>> getChildren >>> getText) -- | The opening "tag" for the XML prologue. xml_prologue :: String xml_prologue = "