[Haskell-cafe] arrow question HXT related
Andrea Rossato
mailing_list at istitutocolli.org
Sat Aug 11 05:50:19 EDT 2007
Hi,
I think this is just a stupid arrow question. Still I cannot find
where my mistake is located.
Suppose I have a simple xml document I want to process with HXT:
<root>
<elem>
<sub />
<risub>text</risub>
</elem>
</root>
After extracting <elem> I want to duplicate the children trees with
the arrow operator (&&&) and process them to get each sub element,
like I try in treMe2.
Below the example code. While I can get each sub element with tryMe
and tryMe1, tryMe2 will produce a []. Instead I want something like
tryMe3. I think I'm missing something stupid but right now I just feel
stupidly blind.
Thanks for your help,
Andrea
import Text.XML.HXT.Arrow
xml = "<root><elem><sub /><risub>text</risub></elem></root>"
tryMe = runLA arrow []
where arrow = constA xml >>> xread
>>>
deep (hasName "elem") >>> getChildren
>>>
(hasName "risub" >>> getChildren >>> getText)
tryMe1 = runLA arrow []
where arrow = constA xml >>> xread
>>>
deep (hasName "elem") >>> getChildren
>>>
(hasName "sub" >>> withDefault (getChildren >>> getText) "ciao")
tryMe2 = runLA arrow []
where arrow = constA xml >>> xread
>>>
deep (hasName "elem") >>> getChildren
>>>
(hasName "sub" >>> withDefault (getChildren >>> getText) "ciao")
&&&
(hasName "risub" >>> getChildren >>> getText)
tryMe3 = runLA arrow []
where arrow = constA xml >>> xread
>>>
constA "first"
&&&
constA "second"
The output:
*test> tryMe
["text"]
*test> tryMe1
["ciao"]
*test> tryMe2
[]
*test> tryMe3
[("first","second")]
*test>
More information about the Haskell-Cafe
mailing list