3
我遇到了一些HXT的問題,但我懷疑這只是我失蹤的箭頭。摺疊箭頭至列表
我有一個像
<str name="field1">value</str>
<lst name="field2"><str>value2</str><str>value3</str></lst>
和內部結構像
data XmlData = XmlStr String | XmlList XmlData
XML結構是否有辦法來收集在箭頭一步元素?
getXmlData :: IOSArrow XmlTree (String, XmlData)
getXmlData = (getAttrl >>> getChildren >>> getText) &&&
((filterByType "str" >>> getText >>> arr (\x -> XmlStr x))
<+> (filterByType "lst" >>> getXmlData))
where filterByType t = isElem >>> hasName t >>> getChildren
到getXmlData遞歸調用需要收集它的答案,並在一個XMLList構造函數包,但我不知道如何收集條款。目前,我正在通過輸出的一些後處理(以相同名稱收集)來完成此任務,但我想要一個更好的解決方案。
>。當我將getChildren調用移出幫助器並添加了一些括號時就起作用了。我很好奇listA的使用情況,但無法找到它作爲管道一部分的示例。你能提供一個listA解決方案嗎? – amccausl 2010-10-27 16:49:29
@amccausl:在上面鏈接的第一個答案中,我們有一個類型爲「XmlTree(String,String)」的非確定性箭頭,我們希望將它與'arr Data.Map.fromList'(類型爲'a [( String,String)](M.Map String String)')來填充地圖。 'listA'讓我們使箭頭的類型匹配起來,以便它們可以組成。 – 2010-10-27 17:14:13