Xml 在Arrow进程上下文中提取多个元素
我想解析以下示例XML文件,不带pickler模块Xml 在Arrow进程上下文中提取多个元素,xml,haskell,hxt,Xml,Haskell,Hxt,我想解析以下示例XML文件,不带pickler模块 基础知识 福 100 酒吧 0 我的结局是: {-#语言箭头#-} 导入Text.XML.HXT.Core 数据组=组A组B派生显示 data GroupA=GroupA字符串派生显示 数据组B=组B字符串派生显示 readGroup::LA XmlTree组 readGroup=deep(isElem>>>hasName“Groups”)>>>获取儿童>>> proc root->do a>hasName“GroupA”>>>getChi
基础知识
福
100
酒吧
0
我的结局是:
{-#语言箭头#-}
导入Text.XML.HXT.Core
数据组=组A组B派生显示
data GroupA=GroupA字符串派生显示
数据组B=组B字符串派生显示
readGroup::LA XmlTree组
readGroup=deep(isElem>>>hasName“Groups”)>>>获取儿童>>>
proc root->do
a>hasName“GroupA”>>>getChildren>>>
proc root->do
n>>hasName“Name”/>getText->hasName“Sum”/>getText->>hasName“GroupB”>>>getChildren>>>
proc root->do
n>>hasName“Name”/>getText->hasName“Sum”/>getText-
不幸的是,这不起作用。
如果我试图在proc
上下文中只提取一个元素,它就会起作用。
但是尝试提取多个元素总是失败\返回空列表。我可能对这篇作文有误解
我使用runLa(xreadDoc>>readGroups)
运行该示例,请尝试以下操作:
readGroup::LA XmlTree组
readGroup=deep(isElem>>>hasName“Groups”)>>>
proc root->do
a>>readGroupA->readGroupB->>hasName“GroupA”>>>
proc root->do
n>>isElem>>>hasName“Name”/>getText->isElem>>>hasName“Sum”/>getText->>hasName“GroupB”>>>
proc root->do
n>>isElem>>>hasName“Name”/>getText->isElem>>>hasName“Sum”/>getText-
当对getChildren
的调用在do
-块之外时,您甚至在进入proc
之前就提交了一个子项。在proc
中,您检查(例如)该子级是否有namename
和nameSum
。毫不奇怪,你没有发现任何孩子符合这些矛盾的要求
通过在内部移动getChildren
,您可以为(例如)n
和s
遍历不同的子对象