module Text.XML.HXT.DOM.FormatXmlTree
( formatXmlTree
, formatXmlContents
)
where
import Data.Maybe
import Text.XML.HXT.DOM.Interface
import Text.XML.HXT.DOM.ShowXml
import Text.XML.HXT.DOM.XmlNode
formatXmlContents :: XmlTree -> XmlTrees
formatXmlContents :: XmlTree -> XmlTrees
formatXmlContents XmlTree
t
= [forall a. XmlNode a => String -> a
mkText (XmlTree -> String
formatXmlTree XmlTree
t)]
formatXmlTree :: XmlTree -> String
formatXmlTree :: XmlTree -> String
formatXmlTree
= forall (t :: * -> *) a. Tree t => (a -> String) -> t a -> String
formatTree XNode -> String
xnode2String
xnode2String :: XNode -> String
xnode2String :: XNode -> String
xnode2String XNode
n
| forall a. XmlNode a => a -> Bool
isElem XNode
n
= String
"XTag " forall a. [a] -> [a] -> [a]
++ XNode -> String
showName XNode
n forall a. [a] -> [a] -> [a]
++ XNode -> String
showAtts XNode
n
| forall a. XmlNode a => a -> Bool
isPi XNode
n
= String
"XPi " forall a. [a] -> [a] -> [a]
++ XNode -> String
showName XNode
n forall a. [a] -> [a] -> [a]
++ XNode -> String
showAtts XNode
n
| Bool
otherwise
= forall a. Show a => a -> String
show XNode
n
where
showName :: XNode -> String
showName :: XNode -> String
showName = forall b a. b -> (a -> b) -> Maybe a -> b
maybe String
"" forall a. Show a => a -> String
show forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe QName
getName
showAtts :: XNode -> String
showAtts :: XNode -> String
showAtts = forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap XmlTree -> String
showAl forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> Maybe a -> a
fromMaybe [] forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe XmlTrees
getAttrl
showAl :: XmlTree -> String
showAl :: XmlTree -> String
showAl XmlTree
t
| forall a. XmlNode a => a -> Bool
isAttr XmlTree
t
= String
"\n| " forall a. [a] -> [a] -> [a]
++ (forall b a. b -> (a -> b) -> Maybe a -> b
maybe String
"" forall a. Show a => a -> String
show forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. XmlNode a => a -> Maybe QName
getName forall a b. (a -> b) -> a -> b
$ XmlTree
t) forall a. [a] -> [a] -> [a]
++ String
"=" forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show (XmlTrees -> String
xshow forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) a. Tree t => t a -> [t a]
getChildren forall a b. (a -> b) -> a -> b
$ XmlTree
t)
| Bool
otherwise
= forall a. Show a => a -> String
show XmlTree
t