Hi Ruben, Ruben Fragoso wrote:
> Hello Jorg > > Thank you for coming back to me. > > So i test the following piece of code (following you suggestion): > > ============================= > while (reader.hasMoreChildren()) { > MyBaseClass.Type type = > MyBaseClass.Type.valueOf(reader.getAttribute("type")); > MyBaseClass base = null; > reader.moveDown(); > switch (type) { > case TypeOne: { > base = (ExtendedTypeOne) uc.convertAnother( > returnValue, ExtendedTypeOne.class); > } > case TypeTwo: { > } > default: { > } > } > reader.moveUp(); > if (null != base) { > returnValue.put(base.getName(), base); > } > } > > > > ========================== You still read the type attribute in advance. > It gave me the same exception that i mentioned previously, about the > START_TAG and END_TAG Works for me. Seems we're not talking about the same code. > Now one thing that i noticed is the following: if i inspect the reader > object when it enters the case, i notice that the element "parser" inside > the reader, has the entire XML objected side, with the right number of > attributes and with the all the attributes names correct. and that the > element "buf" inside the parser has the complete xml inside. XStream uses a big variety of parsers and all are 3rd party. We have absolutely no control about the parsers internal functionality and we may not even care. Under no circumstance. > There are several things which i don't understand: > > 1. why can't i get the XML string, as i don't see any method to retrieve > the XML of the current element in which the reader parsed and is currently > on (as in at the end of the element as you explained before). Which XML? XStream can read also JSON or a compressed internal binary format. > 2. I don't understand that if the reader already went through the xml > element and has everything parsed, why in the uc.convertAnother, we have > to reference its parent object. You can even use 'null'. The parameter is used for XStream's internal housekeeping to detect loops. > 3. should i use the version (convertAnother(Object o, Class type, > Converter cnvrtr); instead of the convertAnother(Object o, Class type) ? The former. The latter is for special use case (i.e. when you know what you're doing). > Hope to hear from you and Thank you in advance :) - Jörg --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email