使用HXT解析Haskell中的RSS文件时,如果标记未命中

使用HXT解析Haskell中的RSS文件时,如果标记未命中,haskell,rss,hxt,Haskell,Rss,Hxt,我必须在Haskell中解析一个RSS文件,并执行以下操作: atTag tag = deep (isElem >>> hasName tag) getRSSDetails = atTag "channel" >>> proc p -> do fTitle <- gotoAndTake "title" -< p fLink <- gotoAndTake "l

我必须在Haskell中解析一个RSS文件,并执行以下操作:

atTag tag = deep (isElem >>> hasName tag)
getRSSDetails = atTag "channel" >>>
   proc p -> do 
      fTitle         <- gotoAndTake "title"        -< p
      fLink          <- gotoAndTake "link"         -< p
      fDescription   <- gotoAndTake "description"  -< p
      fLanguage      <- gotoAndTake "language"     -< p
      fGenerator     <- gotoAndTake "generator"    -< p
      fCopyright     <- gotoAndTake "copyright"    -< p
      fWebMaster     <- gotoAndTake "webMaster"    -< p
      fLastBuildDate <- gotoAndTake "lastBuildDate" -< p
                where gotoAndTake a = (getChildren >>> 
                          isElem >>> 
                          hasName a >>> 
                          getChildren >>> 
                          getText)
atTag tag=deep(isElem>>>hasName标记)
getRSSDetails=atTag“channel”>>>
程序p->do
fTitle>
获取儿童>>>
getText)
我的问题是,当一个标记丢失时,比如说RSS文件中的“lastBuildDate”,我会得到一个空列表,但我只想用“”替换该项

我该怎么做??谢谢

main = do
   rssFeeds <- runX (parseRSS "rss.xml" >>> getRSSDetails)
   print rssFeeds
main=do
rssFeeds>>获取RSSDetails)
打印rssFeeds
EDIT1:通过添加
orElse
(constA“”)在where goto的结尾处取一个…

通过添加

orElse (constA "") 
年底

where gotoAndTake a = (getChildren >>> 
                   isElem >>> 
                   hasName a >>> 
                   getChildren >>> 
                   getText)

如果你已经找到了一个解决方案,可以把它作为答案写下来,然后接受这个答案。