إذا فاتت العلامة عند تحليل ملف RSS في Haskell باستخدام HXT

StackOverflow https://stackoverflow.com//questions/10666068

  •  11-12-2019
  •  | 
  •  

سؤال

لا بد لي من تحليل ملف 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)

مشكلتي هي أنه عندما تكون إحدى العلامات مفقودة، دعنا نقول "lastBuildDate" من ملف RSS، ثم أحصل على قائمة فارغة، لكنني أريد فقط استبدال هذا العنصر بـ "".

كيف أقوم بذلك ؟؟شكرًا،

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

تحرير 1:تم الحل عن طريق الإضافة orElse (constA "") في نهاية المكان gotoAndTake ...

هل كانت مفيدة؟

المحلول

تم الحل عن طريق الإضافة

orElse (constA "") 

في نهاية

where gotoAndTake a = (getChildren >>> 
                   isElem >>> 
                   hasName a >>> 
                   getChildren >>> 
                   getText)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top