[lxml-dev] Help with an error message
James William Pye
x at jwp.name
Tue May 13 19:35:30 CEST 2008
Stefan Behnel <stefan_ml <at> behnel.de> writes:
> Konstantin Ryabitsev wrote:
> > Traceback (most recent call last):
> > File "foo.py", line 6, in <module>
> > elt = Element('foo').text = unistr
> > File "etree.pyx", line 741, in etree._Element.text.__set__
> > File "apihelpers.pxi", line 344, in etree._setNodeText
> > File "apihelpers.pxi", line 648, in etree._utf8
> > AssertionError: All strings must be XML compatible, either Unicode or ASCII
> >
> > Can someone suggest the best way to deal with this?
>
> My first question is: why do you need a '\x00' here? If you want to pass
> binary data in XML, the best way is to use a safe encoding such as uuencode or
> whatever. That should be part of your XML language spec/schema/...
I just ran into this myself. In my case, having the NULL was not desired, rather
I wanted to see a raw '\x00' to appear in the string(ie, the literal backslash
sequence, *not* the NULL character).
It would be nice if lxml would be more explicit about the problem:
raise ValueError("NULL characters are not allowed in XML strings")
That is: How I am supposed to derive that a NULL character was causing that
AssertionError from the given string? (It wasn't until I found this message that
I understood what I was doing wrong)
More information about the lxml-dev
mailing list