Hi, I did OPAX :). At one point there was an effort around NodeFactory, and we chose to improve that one. Cheers, Doru
On Mar 13, 2016, at 4:57 PM, stepharo <stepharo@free.fr> wrote:
So I wonder why Fabrizio did OPAX do you have an idea? You get a simple tree but it is worth? I will finish my improvement on OPAX.
Stef
This class is a pluggable factory that can map elements to different XMLElement subclasses based on the name and namespace information of those elements. You have to create an instance, configure it to handle certain elements with certain classes, and then inject your instance into a DOM parser using #nodeFactory: before parsing. Here is an example of its use:
doc := (XMLDOMParser on: someXML) nodeFactory: (XMLPluggableElementFactory new elementClass: GenericElement; handleElement: 'user' withClass: UserElement; handleElement: 'report' withClass: ReportElement; handleElement: 'report' namespaceURI: 'urn:specialreprot' withClass: SpecialReportElement) parseDocument.
The #handleElementsMatchingClass*: forms try to match elements to the specified classes based on the names of those classes when stripped of any prefix (like XML) and "Element" suffix and converted to both camel case and a hyphenated form. So this: XMLPluggableElementFactory new handleElementsMatchingClass: MYRootUserElement .... will handle 'rootUser' and 'root-user' elements with the MYRootUserElement class.
-- www.tudorgirba.com www.feenk.com "Next time you see your life passing by, say 'hi' and get to know her."