Alle luned 13 agosto 2007, Peter Bailey ha scritto:
> Felix Windt wrote:
> >> I've tried "\1" instead of "\&," too. Same result. I've also
> >
> > If you're hardcoding replacements like that and are certain that your
> > source
> > is well formed xml, you could also just skip the back references:
> >
> > irb(main):001:0> "<registrantName>Normandy Group
> > LLC</registrantName>".gsub!(/registrantName>/, 'SUB.HEAD4>')
> > => "<SUB.HEAD4>Normandy Group LLC</SUB.HEAD4>"
> > irb(main):002:0>
>
> I don't quite understand your suggestion, Felix. Yes, I believe my
> source data is well-formed XML. Are you suggesting that, somehow,
> because it is well-formed XML, I can ignore the element closings? I
> tried what I thought you meant by:
>
> xmlfile.gsub!(/<registrantName>/, '<SUB.HEAD4>')
>
> and, I got the subhead callout at the beginning of the data, but, the
> closing element still is there--</registrantName>/
>
> -Peter

What Felix is suggesting is that, if the source is valid XML, then it will 
have the form

<elementName>text</elementName>

so, if you call gsub! passing a regexp matching elementName>, it should 
replace both the opening and closing tags. When you tried, it didn't work 
because you left the opening < in the regexp, which didn't match the closing 
tag (it starts with </r, not <r). The correct call to gsub should be:

xmlfile.gsub!(/registrantName>/, 'SUB.HEAD4>')

(by the way, notice that the regexp doesn't match the starting '<', so it gets 
removed from the replacement string)

I hope this helps

Stefano