Safe Haskell | None |
---|---|
Language | Haskell2010 |
parse xml
> docA <- parse def "<a />" > docA Right Document <a /> > parseFile def "test.xml" Document <test >
render xml
> Data.ByteString.Lazy.Char.putStrLn $ either undefined (pretty def) docA <?xml version="1.0"?> <a /> > prettyFile def docA
create xml
testHtml :: IODocument
testHtml =create
$ doc -> do decl <-appendDeclaration
"xml" docappendAttrs
[("version", "1.0"), ("lang", "ja")] declappendDoctype
"html" doc html <-appendElement
"html" doc body <- appendElement "body" html div_ <- appendElement "div" body a <- appendElement "a" div_appendAttr
"href" "http://example.com" a txt <-appendPCData
"example.com" a return ()
-- testHtml for copy&paste to ghci. > doc <- create $ \doc -> appendDeclaration "xml" doc >>= \decl -> appendAttrs [("version", "1.0"), ("lang", "ja")] decl >> appendDoctype "html" doc >> appendElement "html" doc >>= \html -> appendElement "body" html >>= \body -> appendElement "div" body >>= \div_ -> appendElement "a" div_ >>= \a -> appendAttr "href" "http://example.com" a >> appendPCData "example.com" a >> return () > doc Document <?xml version="1.0" lang="ja"?><!DOCTYPE html><html><body><div><a href="http://example.com">example.com</a></div></body></html>
access xml tree
> let Just x =child
"xml" doc > x Node <?xml version="1.0" lang="ja"?> >nextSibling
x Just Node <!DOCTYPE html> > Just html =nextSiblingByName
"html" x > html Node <html><body><div><a href="http://example.com">example.com</a></div></body></html> >evaluate
[xpath|string(//a/href)|] html "http://example.com" > let ns = evaluate [xpath|//a/
href|] html >nodeSetSize
ns 1 >nodeSetIndex
ns 0 Right ("href","http://example.com")
modify xml
modify doc $ \d -> selectSingleNode
[xpath|//a|] d >>= \(Left a) -> setOrAppendAttr "href" "#" a
Document <?xml version="1.0" lang="ja"?><!DOCTYPE html><html><body><div><a href="#">example.com</a></div></body></html>
- data Document_ k m
- type Document = Document_ Unknown Immutable
- type MutableDocument = Document_ Unknown Mutable
- data ParseConfig = ParseConfig {}
- data ParseException = ParseException {}
- parse :: ParseConfig -> ByteString -> Either ParseException Document
- parseFile :: ParseConfig -> FilePath -> IO Document
- data PrettyConfig = PrettyConfig {}
- prettyFile :: PrettyConfig -> FilePath -> Document -> IO ()
- pretty :: PrettyConfig -> Document -> ByteString
- data Node_ k m
- type Node = Node_ Unknown Immutable
- type MutableNode k = Node_ k Mutable
- data NodeKind
- class HasName k
- class HasValue k
- class HasAttribute k
- class HasChildren k
- type family M m a
- class NodeLike n m where
- asNode :: n k m -> M m (Node_ k m)
- nodeEqual :: n k m -> n l o -> M m Bool
- forgetNodeKind :: n k m -> n Unknown m
- prettyNode :: PrettyConfig -> Int -> n k m -> M m ByteString
- hashValue :: n k m -> M m CSize
- nodeType :: n k m -> M m NodeType
- getName :: HasName k => n k m -> M m ByteString
- getValue :: HasValue k => n k m -> M m ByteString
- parent :: n k m -> M m (Maybe (Node_ Unknown m))
- firstChild :: HasChildren k => n k m -> M m (Maybe (Node_ Unknown m))
- lastChild :: HasChildren k => n k m -> M m (Maybe (Node_ Unknown m))
- nextSibling :: n k m -> M m (Maybe (Node_ Unknown m))
- prevSibling :: n k m -> M m (Maybe (Node_ Unknown m))
- child :: HasChildren k => ByteString -> n k m -> M m (Maybe (Node_ Unknown m))
- attribute :: HasAttribute k => ByteString -> n k m -> M m (Maybe ByteString)
- nextSiblingByName :: ByteString -> n k m -> M m (Maybe (Node_ Unknown m))
- prevSiblingByName :: ByteString -> n k m -> M m (Maybe (Node_ Unknown m))
- findChildByNameAndAttr :: HasChildren k => ByteString -> ByteString -> ByteString -> n k m -> M m (Maybe (Node_ Unknown m))
- findChildByAttr :: HasChildren k => ByteString -> ByteString -> n k m -> M m (Maybe (Node_ Unknown m))
- childValue :: HasChildren k => n k m -> M m ByteString
- childValueByName :: HasChildren k => ByteString -> n k m -> M m ByteString
- text :: n k m -> M m ByteString
- findAttribute :: (ByteString -> ByteString -> Bool) -> n k m -> M m (Maybe Attribute)
- findChild :: (Node -> Bool) -> n k m -> M m (Maybe (Node_ Unknown m))
- findNode :: (Node -> Bool) -> n k m -> M m (Maybe (Node_ Unknown m))
- mapSibling :: (Node_ Unknown m -> a) -> n k m -> M m [a]
- mapAttrs :: HasAttribute k => (ByteString -> ByteString -> a) -> n k m -> M m [a]
- path :: Char -> n k m -> M m ByteString
- firstElementByPath :: Char -> ByteString -> n k m -> M m (Maybe (Node_ Unknown m))
- root :: n k m -> M m (Maybe (Node_ Unknown m))
- evaluate :: EvalXPath r => XPath r -> n k m -> M m r
- selectSingleNode :: XPath (NodeSet m) -> n k m -> M m (XPathNode m)
- selectNodes :: XPath (NodeSet m) -> n k m -> M m (NodeSet m)
- data Modify a
- create :: Monad m => (MutableDocument -> Modify ()) -> m Document
- modify :: Monad m => Document -> (MutableDocument -> Modify ()) -> m Document
- class MutableNodeLike n where
- setName :: HasName k => ByteString -> n k Mutable -> Modify ()
- setValue :: HasValue k => ByteString -> n k Mutable -> Modify ()
- appendAttr :: HasAttribute k => ByteString -> ByteString -> n k Mutable -> Modify ()
- prependAttr :: HasAttribute k => ByteString -> ByteString -> n k Mutable -> Modify ()
- setAttr :: HasAttribute k => ByteString -> ByteString -> n k Mutable -> Modify ()
- appendChild :: HasChildren k => NodeType -> n k Mutable -> Modify (MutableNode l)
- prependChild :: HasChildren k => NodeType -> n k Mutable -> Modify (MutableNode l)
- appendCopy :: HasChildren k => Node_ k a -> n l Mutable -> Modify (MutableNode k)
- prependCopy :: HasChildren k => Node_ k a -> n l Mutable -> Modify (MutableNode k)
- removeAttr :: HasAttribute k => ByteString -> n k Mutable -> Modify ()
- removeChild :: HasChildren k => Node_ k a -> n l Mutable -> Modify ()
- appendFlagment :: HasChildren k => ParseConfig -> ByteString -> n k Mutable -> Modify ()
- appendAttrs :: (MutableNodeLike n, HasAttribute k) => [Attribute] -> n k Mutable -> Modify ()
- setOrAppendAttr :: (HasAttribute k, MutableNodeLike n) => ByteString -> ByteString -> n k Mutable -> Modify ()
- appendElement :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Element)
- prependElement :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Element)
- appendDeclaration :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Declaration)
- prependDeclaration :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Declaration)
- appendPCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode PCData)
- prependPCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode PCData)
- appendCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode CData)
- prependCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode CData)
- appendComment :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Comment)
- prependComment :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Comment)
- appendDoctype :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Doctype)
- prependDoctype :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Doctype)
- appendPi :: (HasChildren k, MutableNodeLike n) => ByteString -> ByteString -> n k Mutable -> Modify (MutableNode Pi)
- prependPi :: (HasChildren k, MutableNodeLike n) => ByteString -> ByteString -> n k Mutable -> Modify (MutableNode Pi)
- data XPath rt
- class EvalXPath a
- xpath :: QuasiQuoter
- data NodeSet m
- type XPathNode m = Either (Node_ Unknown m) Attribute
- type Attribute = (ByteString, ByteString)
- nodeSetSize :: NodeSet m -> Int
- nodeSetIndex :: NodeSet m -> Int -> XPathNode m
- nodeSetMapM :: (XPathNode m -> IO a) -> NodeSet m -> IO [a]
- nodeSetMapM_ :: (XPathNode m -> IO ()) -> NodeSet m -> IO ()
- nodeSetMap :: (XPathNode m -> a) -> NodeSet m -> [a]
- nodeSetToList :: NodeSet m -> [XPathNode m]
- module Text.XML.Pugi.Const
- def :: Default a => a
Document
type MutableDocument = Document_ Unknown Mutable Source
parse
data ParseConfig Source
parse :: ParseConfig -> ByteString -> Either ParseException Document Source
render
data PrettyConfig Source
prettyFile :: PrettyConfig -> FilePath -> Document -> IO () Source
pretty :: PrettyConfig -> Document -> ByteString Source
Node
type MutableNode k = Node_ k Mutable Source
getter
class NodeLike n m where Source
instance NodeLikeDocument_
Immutable instance NodeLikeNode_
Immutable instance NodeLikeDocument_
Mutable instance NodeLikeNode_
Mutable
asNode, nodeEqual, prettyNode, hashValue, nodeType, getName, getValue, parent, firstChild, lastChild, nextSibling, prevSibling, child, attribute, nextSiblingByName, prevSiblingByName, findChildByNameAndAttr, findChildByAttr, childValue, childValueByName, text, findAttribute, findChild, findNode, mapSibling, mapAttrs, path, firstElementByPath, root, evaluate, selectSingleNode, selectNodes
asNode :: n k m -> M m (Node_ k m) Source
nodeEqual :: n k m -> n l o -> M m Bool Source
forgetNodeKind :: n k m -> n Unknown m Source
prettyNode :: PrettyConfig -> Int -> n k m -> M m ByteString Source
hashValue :: n k m -> M m CSize Source
nodeType :: n k m -> M m NodeType Source
getName :: HasName k => n k m -> M m ByteString Source
getValue :: HasValue k => n k m -> M m ByteString Source
parent :: n k m -> M m (Maybe (Node_ Unknown m)) Source
firstChild :: HasChildren k => n k m -> M m (Maybe (Node_ Unknown m)) Source
lastChild :: HasChildren k => n k m -> M m (Maybe (Node_ Unknown m)) Source
nextSibling :: n k m -> M m (Maybe (Node_ Unknown m)) Source
prevSibling :: n k m -> M m (Maybe (Node_ Unknown m)) Source
child :: HasChildren k => ByteString -> n k m -> M m (Maybe (Node_ Unknown m)) Source
attribute :: HasAttribute k => ByteString -> n k m -> M m (Maybe ByteString) Source
nextSiblingByName :: ByteString -> n k m -> M m (Maybe (Node_ Unknown m)) Source
prevSiblingByName :: ByteString -> n k m -> M m (Maybe (Node_ Unknown m)) Source
:: HasChildren k | |
=> ByteString | node name |
-> ByteString | attribute name |
-> ByteString | attribute value |
-> n k m | |
-> M m (Maybe (Node_ Unknown m)) |
:: HasChildren k | |
=> ByteString | attribute name |
-> ByteString | attribute value |
-> n k m | |
-> M m (Maybe (Node_ Unknown m)) |
childValue :: HasChildren k => n k m -> M m ByteString Source
childValueByName :: HasChildren k => ByteString -> n k m -> M m ByteString Source
text :: n k m -> M m ByteString Source
findAttribute :: (ByteString -> ByteString -> Bool) -> n k m -> M m (Maybe Attribute) Source
find attribute by predicate. since v0.2.0.
findChild :: (Node -> Bool) -> n k m -> M m (Maybe (Node_ Unknown m)) Source
find child by predicate. since v0.2.0.
findNode :: (Node -> Bool) -> n k m -> M m (Maybe (Node_ Unknown m)) Source
find node by predicate. since v0.2.0.
mapSibling :: (Node_ Unknown m -> a) -> n k m -> M m [a] Source
mapAttrs :: HasAttribute k => (ByteString -> ByteString -> a) -> n k m -> M m [a] Source
path :: Char -> n k m -> M m ByteString Source
firstElementByPath :: Char -> ByteString -> n k m -> M m (Maybe (Node_ Unknown m)) Source
root :: n k m -> M m (Maybe (Node_ Unknown m)) Source
evaluate :: EvalXPath r => XPath r -> n k m -> M m r Source
selectSingleNode :: XPath (NodeSet m) -> n k m -> M m (XPathNode m) Source
selectNodes :: XPath (NodeSet m) -> n k m -> M m (NodeSet m) Source
setter
create :: Monad m => (MutableDocument -> Modify ()) -> m Document Source
create document from scratch.
modify :: Monad m => Document -> (MutableDocument -> Modify ()) -> m Document Source
modify document.
class MutableNodeLike n where Source
setName :: HasName k => ByteString -> n k Mutable -> Modify () Source
setValue :: HasValue k => ByteString -> n k Mutable -> Modify () Source
appendAttr :: HasAttribute k => ByteString -> ByteString -> n k Mutable -> Modify () Source
prependAttr :: HasAttribute k => ByteString -> ByteString -> n k Mutable -> Modify () Source
setAttr :: HasAttribute k => ByteString -> ByteString -> n k Mutable -> Modify () Source
appendChild :: HasChildren k => NodeType -> n k Mutable -> Modify (MutableNode l) Source
generic appendChild method. Recommend to use appendElement
etc...
prependChild :: HasChildren k => NodeType -> n k Mutable -> Modify (MutableNode l) Source
generic prependChild method. Recommend to use prependElement
etc...
appendCopy :: HasChildren k => Node_ k a -> n l Mutable -> Modify (MutableNode k) Source
prependCopy :: HasChildren k => Node_ k a -> n l Mutable -> Modify (MutableNode k) Source
removeAttr :: HasAttribute k => ByteString -> n k Mutable -> Modify () Source
removeChild :: HasChildren k => Node_ k a -> n l Mutable -> Modify () Source
appendFlagment :: HasChildren k => ParseConfig -> ByteString -> n k Mutable -> Modify () Source
appendAttrs :: (MutableNodeLike n, HasAttribute k) => [Attribute] -> n k Mutable -> Modify () Source
setOrAppendAttr :: (HasAttribute k, MutableNodeLike n) => ByteString -> ByteString -> n k Mutable -> Modify () Source
specified append/prepend child
appendElement :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Element) Source
prependElement :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Element) Source
appendDeclaration :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Declaration) Source
prependDeclaration :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Declaration) Source
appendPCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode PCData) Source
prependPCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode PCData) Source
appendCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode CData) Source
prependCData :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode CData) Source
appendComment :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Comment) Source
prependComment :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Comment) Source
appendDoctype :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Doctype) Source
prependDoctype :: (HasChildren k, MutableNodeLike n) => ByteString -> n k Mutable -> Modify (MutableNode Doctype) Source
appendPi :: (HasChildren k, MutableNodeLike n) => ByteString -> ByteString -> n k Mutable -> Modify (MutableNode Pi) Source
prependPi :: (HasChildren k, MutableNodeLike n) => ByteString -> ByteString -> n k Mutable -> Modify (MutableNode Pi) Source
XPath
evaluateXPath
generate xpath object.
[xpath|query|] == ((xpathObject) :: XPath (instance of EvalXPath))
NodeSet
type Attribute = (ByteString, ByteString) Source
nodeSetSize :: NodeSet m -> Int Source
nodeSetIndex :: NodeSet m -> Int -> XPathNode m Source
nodeSetMap :: (XPathNode m -> a) -> NodeSet m -> [a] Source
nodeSetToList :: NodeSet m -> [XPathNode m] Source
reexport
module Text.XML.Pugi.Const