]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blobdiff - src/Xml.hs
Update the Odds schema diagram.
[dead/htsn-import.git] / src / Xml.hs
index bbb72be0348d1864ddf3094fda6173769ef247f1..e7d47a12c319617d9a70c8e7d8f6a8cead7eae81 100644 (file)
@@ -10,7 +10,9 @@ module Xml (
   ToDb(..),
   parse_opts,
   pickle_unpickle,
-  unpickleable )
+  unpickleable,
+  unsafe_read_document,
+  unsafe_unpickle )
 where
 
 -- System imports.
@@ -21,13 +23,16 @@ import Text.XML.HXT.Core (
   (/>),
   PU,
   SysConfigList,
+  XmlTree,
   isElem,
   no,
   readDocument,
   runX,
   withRemoveWS,
+  withSubstDTDEntities,
   withValidate,
   xpickleVal,
+  xunpickleDocument,
   xunpickleVal,
   yes )
 
@@ -80,7 +85,9 @@ newtype DtdName = DtdName String
 --   would have to parse whitespace in each (un)pickler.
 --
 parse_opts :: SysConfigList
-parse_opts = [ withRemoveWS yes, withValidate no ]
+parse_opts = [ withRemoveWS yes,
+               withSubstDTDEntities no,
+               withValidate no ]
 
 
 -- | Given an @unpickler@ and a @filepath@, attempt to unpickle the
@@ -140,3 +147,19 @@ unpickleable filepath unpickler = do
     try_unpickle = runX $ readDocument parse_opts filepath
                           >>>
                           xunpickleVal unpickler
+
+
+-- | Unpickle from a 'FilePath' using the given pickler. Explode if it
+--   doesn't work.
+--
+unsafe_unpickle :: FilePath -> PU a -> IO a
+unsafe_unpickle filepath unpickler =
+  fmap head $ runX $ xunpickleDocument unpickler parse_opts filepath
+
+
+-- | Read an XML document from a 'FilePath' into an XmlTree. Explode if it
+--   doesn't work.
+--
+unsafe_read_document :: FilePath -> IO XmlTree
+unsafe_read_document filepath =
+  fmap head $ runX $ readDocument parse_opts filepath