2

我最近发布了关于使用 HXT 泡菜进行解析的文章。经过一番阅读,我决定改用普通的 HXT。

但是,我无法创建列表,即。我有一个 XML 文档:

<meta>
    <sampleQuery>sample1</sampleQuery>
    <sampleQuery>sample2</sampleQuery>
</meta>

和解析功能

parseMeta =
  proc x -> do
    meta          <- deep (isElem >>> hasName "meta") -< x
    sampleQueries <- getText <<< getChildren <<< deep (hasName "sampleQuery") -< meta
    returnA -< Meta sampleQueries

sampleQueries 应该具有 [String] 类型(在这种情况下为 ["sample1", "sample2"]),但我无法实现这一点。

4

1 回答 1

2

箭头符号在这里似乎有点矫枉过正。

import Text.XML.HXT.Core

xml = unlines 
  [ "<meta>"
  , "<sampleQuery>sample1</sampleQuery>"
  , "<sampleQuery>sample2</sampleQuery>"
  , "</meta>"
  ]

queries = hasName "meta" /> hasName "sampleQuery" /> getText

main = runX (readString [] xml /> queries) >>= print

["sample1","sample2"]正如预期的那样,这将打印出来。

于 2013-11-19T23:58:30.237 回答