(And just to be as precise as I can and avoid confusion, when I said "link" I meant "unnamed anchor node with an href attribute")
On 26 June 2012 10:15, Ivan Perez <ivanperezdoming...@gmail.com> wrote: > Hi, > You code fails because a link is not a node of kind Text, I think. > What you want is to get the text from a child node of an anchor node. > I think the following should work: > > is_link :: (ArrowXml a) => a XmlTree XmlTree > is_link = hasName "a" > > process_link :: (ArrowXml a) => a XmlTree XmlTree > process_link = getChildren >>> getText >>> mkText > > replace_links_with_their_text :: (ArrowXml a) => a XmlTree XmlTree > replace_links_with_their_text = > processTopDown $ process_link `when` is_link > > Cheers, > Ivan. > > On 26 June 2012 06:58, Michael Orlitzky <mich...@orlitzky.com> wrote: >> I would like to replace, >> >> <body><a href="#">foo</a></body> >> >> with, >> >> <body>foo</body> >> >> using HXT. So far, the closest I've come is to parse the HTML and apply >> the following stuff: >> >> is_link :: (ArrowXml a) => a XmlTree XmlTree >> is_link = >> hasName "a" >> >> replace_links_with_their_text :: (ArrowXml a) => a XmlTree XmlTree >> replace_links_with_their_text = >> processTopDown $ (getText >>> mkText) `when` is_link >> >> Unfortunately, this just removes the "a" element and its text entirely. >> The other-closest solution is, >> >> replace_links_with_their_text :: (ArrowXml a) => a XmlTree XmlTree >> replace_links_with_their_text = >> processTopDown $ (txt "foo") `when` is_link >> >> Of course, I don't want to hard-code the value "foo", and I can't figure >> out a way to feed the element's text back into 'txt'. >> >> Anyone tried this before? >> >> _______________________________________________ >> Haskell-Cafe mailing list >> Haskell-Cafe@haskell.org >> http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe