[Haskell-cafe] Question about TagSoup

Alex Rozenshteyn rpglover64 at gmail.com
Fri Dec 3 14:45:34 CET 2010


I really wouldn't use tag soup for this.  Haskell has libraries specifically
for XML processing which might be better suited to your needs.

On Fri, Dec 3, 2010 at 5:59 AM, David Virebayre
<dav.vire+haskell at gmail.com<dav.vire%2Bhaskell at gmail.com>
> wrote:

> Hello café,
>
> I have seen tutorials about extracting information from a tag soup, but I
> have a different use case:
> I want to read a xml file, find a tag, change its content, and write the
> xml file back.
>
> This is an example of the files
>
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <idPkg:Story xmlns:idPkg="
> http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging" DOMVersion="7.0">
>        <Story Self="ub9fad" AppliedTOCStyle="n" TrackChanges="false"
> StoryTitle="$ID/" AppliedNamedGrid="n">
>                <StoryPreference OpticalMarginAlignment="false"
> OpticalMarginSize="12" FrameType="TextFrameType"
> StoryOrientation="Horizontal" StoryDirection="LeftToRightDirection"/>
>                <InCopyExportOption IncludeGraphicProxies="true"
> IncludeAllResources="false"/>
>                <ParagraphStyleRange
> AppliedParagraphStyle="ParagraphStyle/prix">
>                        <CharacterStyleRange
> AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
>                                <Content>zzznba5</Content>
>                        </CharacterStyleRange>
>                </ParagraphStyleRange>
>        </Story>
> </idPkg:Story>
>
> Assuming I want to change the content of the "Content" tag, this is what I
> came up with (simplified), I'm using direct recursion. Is there a better way
> ?
>
> ts = do
>  soup <- parseTags `fmap` readFile "idml/h00/Stories/Story_ub9fad.xml"
>  writeFile "test" $ renderTagsOptions renderOptions{optMinimize = const
> True}
>                   $ modif soup
>
> modif [] = []
> modif (x@(TagOpen "Content" []):TagText _m : xs) = x : TagText "modified"
> : modif xs
> modif (x:xs) = x : modif xs
>
> David.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>


-- 
          Alex R
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20101203/76a37033/attachment.htm>


More information about the Haskell-Cafe mailing list