"Michael Rueger" michael@impara.de wrote:
there is a new version of Yaxo up at http://source.impara.de/infrastructure/XML-Parser-mir.10.mcz
Thank you very much for your prompt fix!
You need the two attached 3.8.2/3.10 fixes for the new package to work.
Please test the new version. For now I only tried to verify against some examples I had readily available.
Here are my first test results: 1. Squeak 3.9 #7067 does not contain the classes CharacterSetComplement and WideCharacterSet, therefore I could not immediately use your code with that version. To proceed, I dropped works with 3.9 for now and moved to 3.10beta #7158.
2. In Squeak 3.10beta #7158 I could try your code. The surprising result is, that a structured xml element with subelements can be parsed, but in the parse tree, all subelements are missing.
Problem analysis: 1. During parsing, a new element is inserted into its parent in one of the methods XMLDOMParser>>startElement:attributeList: XMLDOMParser>>startElement:namespaceURI:namespace:attributeList:
The relevant statement is. self top addElement: newElement
addElement: is defined in XMLNodeWithElements where we find:
addElement: element self elements add: element
Method #elements is an accessor with lazy initialization in XMLNodeWithElements, but in the subclass XMLElement it is now a method that uses a #select: to construct a new collection.
Conclusion: We do not add into the instance variable element, but in a collection that was constructed on the fly and that is subsequently dropped.
Proposal of a work around. As #elements does not answer an lazily initialized instance variable, we cannot use in XMLElement the #addElements: method that we inherit from XMLNodeWithElements.
Rather, I use these instance methods in XMLElement:
addContent: contentString super elements add: contentString
addElement: element super elements add: element
The first method is a modification of your method, the second one is added.
With this change, I can correctly build the parse tree for xml elements with subelements - also for xml elements that mix #PCDATA (that is, strings) with structured elements.
Comments to these proposals are of cource welcome. Perhaps you can find a better solution.
By the way: Do we have any tests for the XML parser? At this moment I am deeply involved in xml, that would be a good moment to write some tests. Any interest?
Greetings Boris