Re: xmlCtxReadIO and BOM

Frank Gross <[email protected]>
Newsgroups gmane.comp.gnome.lib.xml.general
Message-ID <[email protected]>
Hi,

  I have wrappers around libxml calls, and already implemented the 
"hack" to skip the BOM. But I think there is an issue here, because when 
I use for instance xmlParserInputBufferCreateIO(), it skips the BOM when 
the encoding is provided. So for me there is an inconsistency here as 
xmlCtxtReadIO() should work the same way, or maybe I missed something.

Regards,

Frank


Le 02/02/2018 à 19:52, Eric S. Eberhard a écrit :
> Same advice I just gave to someone else.  Unless it is HUGE this 
> works.  Read it into a memory buffer (calloc, malloc, whatever).  
> Remove BOM.  Parse the memory buffer.
>
> If you do this often you can make the buffer address and it's size 
> static so that you don't release it (deliberate memory leak) and then 
> keep using it for minimal context switching (and more memory) ... if 
> you need it bigger, realloc.
>
> libxml2.a cannot do everything for everyone -- putting small wrappers 
> on things is good.  I generally use it with giant wrappers (meaning 
> the open, calloc, parse, etc are all one routine).  Then when changes 
> occur you can change your wrapper and generally life is good.  I would 
> not recommend coding directly with raw libxml2 calls -- they are lower 
> level but complex.
>
> BTW -- if the data is HUGE then write it to a /tmp file (removing the 
> BOM as you do it) and parse and delete the file ... modern machines 
> are so fast it won't notice.  I have systems sending and receiving 2-4 
> million XML docs per day.  Several have to deal with quirks -- 
> especially when dealing with "big box" places or shipping companies 
> (you cannot get Target or USPS to change for you).  One does not put 
> spaces between attribute ending quote and the start of the next 
> attribute.  It is wrong.  It won't parse.  So I filter it with my 
> wrapper.  And so forth.
>
> The specs are often interpreted differently by other organizations 
> that you cannot win against.  So work around them.
>
> Daniel is a great guy but ... if he had to make an exception and 
> change for everything I have (and I imagine thousands of others) he 
> need 100 clones :-)
>
> E
>
> On 2/2/2018 1:19 AM, Frank Gross wrote:
>> Hi,
>>
>> I came to an issue where I try to parse an XML document from an HTTP 
>> stream. I decode the charset from the HTTP header and then create a 
>> xmlCtxReadIO with that charset value as encoding parameter. The 
>> problem is that the XML document has three BOM characters, and it 
>> seems that xmlCtxReadIO considers the document as malformed in that 
>> case. (XML document with BOM value and when we call xmlCtxReadIO with 
>> an encoding value).  Notice that if I don't provide the encoding 
>> value to xmlCtxReadIO, the parsing works well as BOM is decoded. Is 
>> there a way to ignore the BOM when parsing with xmlCtxReadIO ?
>>
>> Regards,
>>
>> Frank
>>
>>
>
> -- 
> Eric S. Eberhard
> VICS
> 2933 W Middle Verde Road
> Camp Verde, AZ  86322
>
> 928-567-3727  work                      928-301-7537  cell
>
> http://www.vicsmba.com/index.html              (our work)
> http://www.vicsmba.com/ourpics/index.html      (fun pictures)

-- 
Frank GROSS
Software Engineer - Web Services
Four J's Development Tools - http://www.4js.com

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.