Christian Zagrodnick | 16 May 14:20

bug: objectify removes text on replace()?

Hi,

with lxml 2.0.4 I get text removed when I replace a node. The text 
after the replaced node vanishes....

-----------------------
import lxml.objectify
import lxml.etree

xml = lxml.objectify.fromstring(
    '<foo><bar>before baz<baz/>after baz</bar><bar/></foo>')
print lxml.etree.tostring(xml, pretty_print=True)
print 50*'-'

baz = xml['bar']['baz']
xml['bar'].replace(baz, lxml.objectify.E.holler())

print lxml.etree.tostring(xml, pretty_print=True)
-----------------

Prints out:

<foo>
  <bar>before baz<baz/>after baz</bar>
  <bar/>
</foo>

--------------------------------------------------
<foo>
  <bar>before baz<holler 
(Continue reading)

Stefan Behnel | 16 May 14:41
Picon

Re: bug: objectify removes text on replace()?

Hi,

Christian Zagrodnick wrote:
> with lxml 2.0.4 I get text removed when I replace a node. The text 
> after the replaced node vanishes...

You mean the .tail property of the node that you replace.

http://codespeak.net/lxml/tutorial.html#elements-contain-text

When you replace the node, it takes its tail with it.

Stefan
Christian Zagrodnick | 16 May 15:20

Re: bug: objectify removes text on replace()?

On 2008-05-16 14:41:44 +0200, Stefan Behnel <stefan_ml <at> behnel.de> said:

> Hi,
> 
> Christian Zagrodnick wrote:
>> with lxml 2.0.4 I get text removed when I replace a node. The text
>> after the replaced node vanishes...
> 
> You mean the .tail property of the node that you replace.
> 
> http://codespeak.net/lxml/tutorial.html#elements-contain-text
> 
> When you replace the node, it takes its tail with it.

Hrr. I'm too DOMified. Sorry :)

--
--

-- 
Christian Zagrodnick · cz <at> gocept.com
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 4 · fax +49 345 1229889 1
Zope and Plone consulting and development

Gmane