У меня проблемы с HXT , хотя я подозреваю, что мне просто не хватает стрелок.
У меня есть структура XML, такая как
<str name="field1">value</str>
<lst name="field2"><str>value2</str><str>value3</str></lst>
И внутренняя структура, такая как
data XmlData = XmlStr String | XmlList XmlData
Есть ли способ собрать элементы на шаге в стрелке?
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, но я не знаю, как собирать термины.В настоящее время я выполняю это с некоторой пост-обработкой на выходе (сбор с тем же именем), но я бы хотел лучшее решение.