Re: Bug (?) in XML::LibXML when creating XML docs with invalid characters

Francisco Obispo <[email protected]> Tue, 9 Apr 2013 10:13:43 -0700
Newsgroups gmane.comp.lang.perl.xml
Message-ID <[email protected]>
Oops,

Pressed "send" without much testing:

$ ./test.pl |xmllint -format - 
-:2: parser error : PCDATA invalid Char value 7
<elem></elem>
      ^

So, "7" UTF-8 is a control character, I don't think you can use control chars in XML at all, however, I guess you can do something like &#x0007; but I'm not sure about the implications on the parsers.

Francisco


On Apr 9, 2013, at 9:49 AM, Francisco Obispo <[email protected]> wrote:

> Mhm,
> 
> Looking at this, more closely now, it seems like appendText is an alias for appendTextNode, so that won't work,
> 
> I tested the code in my computer and it doesn't show the problem:
> 
> $ ./test.pl 
> <?xml version="1.0" encoding="UTF-8"?>
> <elem></elem>
> 
> 
> 
> what version are you using?
> 
> I have 1.84 in mine.
> 
> 
> 
> 
> On Apr 9, 2013, at 9:02 AM, Francisco Obispo <[email protected]> wrote:
> 
>> You should probably use
>> 
>> $element->appendTextNode($c);
>> 
>> 
>> 
>> 
>> On Apr 9, 2013, at 4:11 AM, aitor <[email protected]> wrote:
>> 
>>> Hi,
>>> 
>>> the following perl snippet creates an invalid XML using LibXML
>>> functions, which I though was not possible. The idea is to attach a
>>> malformed character via "appendText". I would say that the function
>>> should fail when feeding invalid characters ?
>>> 
>>> test.pl
>>> *******
>>> 
>>> #!/usr/bin/perl
>>> 
>>> use XML::LibXML;
>>> 
>>> my $c = pack("W", 07); # the invalid character
>>> 
>>> my $odoc = XML::LibXML::Document->new('1.0',"UTF-8");
>>> my $elem = $odoc->createElement("elem");
>>> $odoc->setDocumentElement($elem);
>>> $elem->appendText($c);
>>> print $odoc->toString(1)."\n";
>>> 
>>> ******
>>> % perl test.pl > test.xml
>>> % xmllint --noout test.xml
>>> test.xml:2: parser error : PCDATA invalid Char value 7
>>> <elem>lem>
>>>    ^
>>> 
>>> Any ideas ?
>>> 
>>> best,
>>>                                              aitor
>>> _______________________________________________
>>> Perl-XML mailing list
>>> [email protected]
>>> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>> 
>> Francisco Obispo 
>> Director of Applications and Services - ISC
>> email: [email protected]
>> Phone: +1 650 423 1374 || INOC-DBA *3557* NOC
>> PGP KeyID = B38DB1BE
>> 
>> _______________________________________________
>> Perl-XML mailing list
>> [email protected]
>> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> 
> Francisco Obispo 
> Director of Applications and Services - ISC
> email: [email protected]
> Phone: +1 650 423 1374 || INOC-DBA *3557* NOC
> PGP KeyID = B38DB1BE
> 
> _______________________________________________
> Perl-XML mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Francisco Obispo 
Director of Applications and Services - ISC
email: [email protected]
Phone: +1 650 423 1374 || INOC-DBA *3557* NOC
PGP KeyID = B38DB1BE

_______________________________________________
Perl-XML mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs