PHP not have access to the LibXML2 SAX interface?

2019-05-18 15:36发布

问题:

PHP not have a "standard SAX" interface for event-driven XML parse, have a Expat one. Expat require --enable-libxml option... But LibXML2 have a good and fast standard SAX interface (!)... So, how to access the LibXML2's standard SAX interface with PHP?

There are a simple workaround to enable the SAX interface?


Related question: Is XMLReader a SAX parser, a DOM parser, or neither?

Terminology (to say the "same language" in the discussions):

  • event-driven XML parser: SAX and Expat, they was 1998's "competidors", but today (2013's) are only a "reference model for interfacing the parser implementation".

  • event-driven XML parser implementations: see LibXML2, expat.sourceforge, Oracle/Java/SAX, etc. They are "concrete implementations" (can generate binary code for the parser).

  • SAX interface: an abstraction based on the "SAX reference model", see saxproject.org and Wikipedia.

  • Expat interface: an abstraction based on the "Expat reference model", see jclark.com/xml and Wikipedia.

  • PHP's XML Parser conventions for an event-driven XML parser interface... Is a Expat interface but, it is over the Expat or the LibXML2 implementation??

  • PHP's SAX interface: not exist (!), but can be build as more one LibXML2 interface?

  • PHP's "other XML parser interfaces": remember that DomDocument, XSLTProcessor, etc. are PHP interfaces to the LibXML2 implementations.

PS: please edit this text for better or detailed explanations... Detailing "library interface": is a set of function names, methods and properties, used as "module interface" between PHP (for programmers abstrations) and a library implementation (drivers, etc. for assembler/binary concrete implementation).