【发布时间】:2014-04-08 11:14:40
【问题描述】:
有没有办法测试节点(属性值)并将其与我的 if-condition 一起使用? 例如:
import Text.XML.HXT.Core
import System.Environment --para uso do getArgs
import Data.List.Split (splitOn)
data Class = Class { name ::String }
deriving (Show,Eq)
main = do
[src]<- getArgs
teams <- runX(readDocument [ withValidate no] src >>> getClass)
print teams
--Test
test = if (True) then getAttrValue "rdf:about" else getAttrValue "rdf:ID"
atTag tag = deep (isElem >>> hasName tag)
getClass = atTag "owl:Class" >>>
proc l -> do
className <- test -< l
returnA -< Class { name = splitOn "#" className !! 1}
在该示例中,我想测试一个属性值,如果它存在,则返回我的 then 条件,否则返回 else 条件! 我看到了 XMLArrow 的 API,它存在一些能够做到这一点的函数(例如,isAttrib 或 hasAttrib)但它不返回布尔值...... 所以......我想到了解决它的其他方法,但我认为必须有一个更简单的解决方案来解决这个问题...... 有人可以给我一个提示吗?
【问题讨论】:
标签: haskell if-statement attributes arrows hxt