
Playing on HXT 8.3.0 via cabal on GHC 6.10.2. While there are plenty of useful examples of extract data from XML, applying the appropriate API to transform and/or merging still baffle me. In this case, it is the insertChildrenAfter, let's try it with the following example: given 2 files --- update.xml <?xml version="1.0" encoding="UTF-8"?> <update> <hot>sky is now orange</hot> <hot>fish is fresh</hot> <hot>violets are blue</hot> </update> --- master.xml <?xml version="1.0" encoding="UTF-8"?> <news> <page1> <hot>sky is blue</hot> <hot>roses are red</hot> </page1> <page2> <story>game shipped on sunday</story> </page2> </news> with the intention of augment the master list with the new items: import Text.XML.HXT.Arrow import qualified Text.XML.HXT.DOM as DOM getMaster = readDocument [(a_validate,v_0)] "master.xml" >>> removeDocWhiteSpace getUpdate = readDocument [(a_validate,v_0)] "update.xml" >>> removeDocWhiteSpace selectUpdateArea = getChildren >>> hasName "news" >>> getChildren >>> hasName "page1" updateContent = insertChildrenAfter (selectUpdateArea) (getUpdate >>> getChildren >>> getChildren) main = do runX ( getMaster >>> updateContent >>> putXmlTree "-" ) instead the following tree is produced: ---XTag "/" | +---XTag "hot" | | | +---XText "sky is red" | +---XTag "hot" | | | +---XText "fish is fresh" | +---XTag "hot" | | | +---XText "violets are blue" | +---XTag "news" | +---XTag "page1" | | | +---XTag "hot" | | | | | +---XText "sky is blue" | | | +---XTag "hot" | | | +---XText "roses are red" | +---XTag "page2" | +---XTag "story" | +---XText "game shipped " Can someone give some examples of how insertChildrenAfter works? How about also some general guidelines when comes to merging/grafting XML documents. Jake