Если тег отсутствует при разборе RSS-файла в Haskell с помощью HXT

Мне нужно проанализировать файл RSS в Haskell, и я делаю что-то вроде:

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)

Моя проблема в том, что когда один тег отсутствует, скажем, «lastBuildDate» из файла RSS, я получаю пустой список, но я хочу просто заменить этот элемент на «».

Как мне это сделать ?? Спасибо,

main = do
   rssFeeds <- runX (parseRSS "rss.xml" >>> getRSSDetails)
   print rssFeeds

EDIT1: Решено добавлением orElse (constA "") в конце, где gotoAndTake a...


person Daniel G    schedule 19.05.2012    source источник
comment
Если вы нашли решение, не стесняйтесь написать его как ответ и принять этот ответ.   -  person Daniel Wagner    schedule 19.05.2012


Ответы (1)


Решено добавлением

orElse (constA "") 

в конце

where gotoAndTake a = (getChildren >>> 
                   isElem >>> 
                   hasName a >>> 
                   getChildren >>> 
                   getText)
person Daniel G    schedule 22.05.2012