Safe Haskell | None |
---|---|
Language | Haskell2010 |
import/langauge
> :set -XOverloadedStrings -XQuasiQuotes > import Text.XML.Pugi > import qualified Text.XML.Pugi.Mutable as M
| 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 :: IO Document
testHtml = M.create $ doc -> do
decl <- M.appendDeclaration "xml" doc
M.appendAttrs [("version", "1.0"), ("lang", "ja")] decl
M.appendDoctype "html" doc
html <- M.appendElement "html" doc
body <- M.appendElement "body" html
div_ <- M.appendElement "div" body
a <- M.appendElement "a" div_
M.appendAttr "href" "http://example.com" a
txt <- M.appendPCData "example.com" a
return ()
-- testHtml for copy&paste to ghci. > doc <- M.create $ \doc -> M.appendDeclaration "xml" doc >>= \decl -> M.appendAttrs [("version", "1.0"), ("lang", "ja")] decl >> M.appendDoctype "html" doc >> M.appendElement "html" doc >>= \html -> M.appendElement "body" html >>= \body -> M.appendElement "div" body >>= \div_ -> M.appendElement "a" div_ >>= \a -> M.appendAttr "href" "http://example.com" a >> M.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
M.modify doc $ \d -> M.selectSingleNode [xpath|//a|] d >>= \(Left a) -> M.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 MutableFlag
- 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
- asMutable :: NodeLike n => n k Mutable -> n k Mutable
- asImmutable :: NodeLike n => n k Immutable -> n k Immutable
- class NodeLike n where
- asNode :: n k Immutable -> Node_ k Immutable
- nodeEqual :: n k Immutable -> n l Immutable -> Bool
- forgetNodeKind :: n k Immutable -> n Unknown Immutable
- prettyNode :: PrettyConfig -> Int -> n k Immutable -> ByteString
- hashValue :: n k Immutable -> CSize
- nodeType :: n k Immutable -> NodeType
- getName :: HasName k => n k Immutable -> ByteString
- getValue :: HasValue k => n k Immutable -> ByteString
- parent :: n k Immutable -> Maybe Node
- firstChild :: HasChildren k => n k Immutable -> Maybe Node
- lastChild :: HasChildren k => n k Immutable -> Maybe Node
- nextSibling :: n k Immutable -> Maybe Node
- prevSibling :: n k Immutable -> Maybe Node
- child :: HasChildren k => ByteString -> n k Immutable -> Maybe Node
- attribute :: HasAttribute k => ByteString -> n k Immutable -> Maybe ByteString
- nextSiblingByName :: ByteString -> n k Immutable -> Maybe Node
- prevSiblingByName :: ByteString -> n k Immutable -> Maybe Node
- findChildByNameAndAttr :: HasChildren k => ByteString -> ByteString -> ByteString -> n k Immutable -> Maybe Node
- findChildByAttr :: HasChildren k => ByteString -> ByteString -> n k Immutable -> Maybe Node
- childValue :: HasChildren k => n k Immutable -> ByteString
- childValueByName :: HasChildren k => ByteString -> n k Immutable -> ByteString
- text :: n k Immutable -> ByteString
- findAttribute :: (ByteString -> ByteString -> Bool) -> n k Immutable -> Maybe Attribute
- findChild :: (Node -> Bool) -> n k Immutable -> Maybe Node
- findNode :: (Node -> Bool) -> n k Immutable -> Maybe Node
- mapSibling :: (Node_ Unknown Immutable -> a) -> n k Immutable -> [a]
- mapAttrs :: HasAttribute k => (ByteString -> ByteString -> a) -> n k Immutable -> [a]
- path :: Char -> n k Immutable -> ByteString
- firstElementByPath :: Char -> ByteString -> n k Immutable -> Maybe Node
- root :: n k Immutable -> Maybe Node
- evaluate :: EvalXPath r => XPath r -> n k Immutable -> XPathResult r Immutable
- selectSingleNode :: XPath NodeSet -> n k Immutable -> XPathNode Immutable
- selectNodes :: XPath NodeSet -> n k Immutable -> NodeSet Immutable
- data XPath rt
- class EvalXPath a where
- type XPathResult a m
- 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
data MutableFlag Source
EvalXPath (MutableFlag -> *) NodeSet Source | |
type XPathResult (MutableFlag -> *) NodeSet m = NodeSet m 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
class HasAttribute k Source
asImmutable :: NodeLike n => n k Immutable -> n k Immutable Source
getter
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 Immutable -> Node_ k Immutable Source
nodeEqual :: n k Immutable -> n l Immutable -> Bool Source
forgetNodeKind :: n k Immutable -> n Unknown Immutable Source
prettyNode :: PrettyConfig -> Int -> n k Immutable -> ByteString Source
hashValue :: n k Immutable -> CSize Source
nodeType :: n k Immutable -> NodeType Source
getName :: HasName k => n k Immutable -> ByteString Source
getValue :: HasValue k => n k Immutable -> ByteString Source
parent :: n k Immutable -> Maybe Node Source
firstChild :: HasChildren k => n k Immutable -> Maybe Node Source
lastChild :: HasChildren k => n k Immutable -> Maybe Node Source
nextSibling :: n k Immutable -> Maybe Node Source
prevSibling :: n k Immutable -> Maybe Node Source
child :: HasChildren k => ByteString -> n k Immutable -> Maybe Node Source
attribute :: HasAttribute k => ByteString -> n k Immutable -> Maybe ByteString Source
nextSiblingByName :: ByteString -> n k Immutable -> Maybe Node Source
prevSiblingByName :: ByteString -> n k Immutable -> Maybe Node Source
:: HasChildren k | |
=> ByteString | node name |
-> ByteString | attribute name |
-> ByteString | attribute value |
-> n k Immutable | |
-> Maybe Node |
:: HasChildren k | |
=> ByteString | attribute name |
-> ByteString | attribute value |
-> n k Immutable | |
-> Maybe Node |
childValue :: HasChildren k => n k Immutable -> ByteString Source
childValueByName :: HasChildren k => ByteString -> n k Immutable -> ByteString Source
text :: n k Immutable -> ByteString Source
findAttribute :: (ByteString -> ByteString -> Bool) -> n k Immutable -> Maybe Attribute Source
find attribute by predicate. since v0.2.0.
findChild :: (Node -> Bool) -> n k Immutable -> Maybe Node Source
find child by predicate. since v0.2.0.
findNode :: (Node -> Bool) -> n k Immutable -> Maybe Node Source
find node by predicate. since v0.2.0.
mapSibling :: (Node_ Unknown Immutable -> a) -> n k Immutable -> [a] Source
mapAttrs :: HasAttribute k => (ByteString -> ByteString -> a) -> n k Immutable -> [a] Source
path :: Char -> n k Immutable -> ByteString Source
firstElementByPath :: Char -> ByteString -> n k Immutable -> Maybe Node Source
root :: n k Immutable -> Maybe Node Source
evaluate :: EvalXPath r => XPath r -> n k Immutable -> XPathResult r Immutable Source
selectSingleNode :: XPath NodeSet -> n k Immutable -> XPathNode Immutable Source
selectNodes :: XPath NodeSet -> n k Immutable -> NodeSet Immutable Source
XPath
evaluateXPath
type XPathResult a m Source
generate xpath object.
[xpath|query|] == ((xpathObject) :: XPath (instance of EvalXPath))
NodeSet
Show (NodeSet m) Source | |
EvalXPath (MutableFlag -> *) NodeSet Source | |
type XPathResult (MutableFlag -> *) NodeSet m = NodeSet m Source |
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