Re: [xml] why is htmlNewParserCtxt static?
- From: Michael Day <mikeday yeslogic com>
- To: veillard redhat com
- Cc: xml gnome org
- Subject: Re: [xml] why is htmlNewParserCtxt static?
- Date: Thu, 21 Sep 2006 10:15:41 +1000
Hi Daniel,
But shouldn't you use one of the wrapper functions where you specify
what input will be used ? Like htmlCreateMemoryParserCtxt() or one of the
htmlRead... function ? What is your use case ?
The use case is replacing xmlDefaultExternalEntityLoader() with a
customised entity loader function.
The entity loader is passed an xmlParserCtxtPtr, which allows
document-specific options to be passed in using the _private field and
used by the entity loader (as long as you don't use xmlReader :) So when
I parse a document I want to pass in some stuff in the _private field of
the context.
Normally I would use xmlReadFile(), but that creates its own context and
destroys it afterwards and doesn't give me a chance to put anything in
_private. However, xmlCtxtReadFile() looks like just what I want, as it
takes a context that I've already created with the appropriate stuff in
_private.
On the HTMLparser side of things I can't do this, as htmlNewParserCtxt()
is static and I can't call it. I want to call htmlCtxtReadFile(), but
first I need to create a context, set the _private field and pass it in.
The htmlCreateFileParserCtxt() is the only way I can create a context,
but I can't use it, because it calls xmlLoadExternalEntity() itself,
before I have had a chance to set _private. Then when I pass the context
into htmlCtxtReadFile() it will call xmlLoadExternalEntity() again!
So I need a way to create a HTML parsing context that will let me set
_private before trying to load any external entities. Does this seem
reasonable? I can do it with the XML parsing API, so I just assume that
the HTML parsing API should work the same way.
Best regards,
Michael
--
Print XML with Prince!
http://www.princexml.com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]