在Haskell中解析XML

greole

我试图向我学习一些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"呢?

greole

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章