我试图向我学习一些Haskell,并且想解析具有以下结构的XML文件:
<properties>
<property name="a">
<value>1</value>
</property>
<property name="b">
<value>2</value>
</property>
</properties>
按照Wiki中的示例,我可以通过以下方式搜索所有属性
runX (readDocument [ withValidate no] "my.xml"
>>> deep (isElem >>> hasName "properties")
但是我怎么能只提取的值元素property name="b"
呢?
TagSoup确实为我做了这件事。根据我发现的教程
module Main where
import Text.HTML.TagSoup
searchXML :: IO ()
searchXML = do
rsp <- readFile "test.xml"
let tags = parseTags rsp
let links = extr "value" [] $
extr "property" [("name","b")] tags
let value = fromTagText $ links !! 0
putStr value
where
extr a b c = drop 1 $ takeWhile (~/= TagClose a) $
dropWhile (~/= TagOpen a b) c
main = searchXML
仅打印值2
。但是我很确定代码可以简化很多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句