For round-triping, I am 99.99% certain that no other changes are required to StAX (providing you are fine with the Event half of the API)
For generating XML to match exacting formatting, a special mode whereby ignorableSpace events can be raised and received in between Attribute events. There could be a need some other event required to signal the end of the start tag. -Stephen On Sat, Aug 9, 2008 at 12:58 AM, Stephen Connolly < [EMAIL PROTECTED]> wrote: > OK... one change needed in the StAX API is to fix > XMLOutputFactory.newInstance(String, ClassLoader) to return XMLOutputFactory > and not XMLInputFactory. > > ;-) > > > On Fri, Aug 8, 2008 at 7:55 PM, Stephen Connolly < > [EMAIL PROTECTED]> wrote: > >> On Fri, Aug 8, 2008 at 2:15 PM, Aaron Digulla <[EMAIL PROTECTED]> wrote: >> >>> Quoting Jochen Wiedmann <[EMAIL PROTECTED]>: >>> >>> That didn't work well. Okay, since you don't believe me, here is an >>>>> (incomplete) list of changes I would need in StAX to be able to use it >>>>> for >>>>> my work instead of having to write my own XML parser. >>>>> >>>> >>>> I think here is a misunderstandment. The question was not (at least >>>> not IMO) whether you could rewrite DecentXML to use StAX, but whether >>>> you could give DecentXML a StAX API. That way Maven components could >>>> basically trust in a standard API, except for the cases where the >>>> differences matter. >>>> >>> >>> Internally, DecentXML uses a StAX-like API (the DOM parser part uses a >>> tokenizer to break the input into pieces). The problem is that I can't base >>> DecentXML on StAX because StAX throws information away that I need and I >>> can't offer a StAX-compatible API because StAX isn't meant to keep the >>> information I need to preserve. >>> >>> I could create a filter class which strips the information that DecentXML >>> provides down to a StAX API but that would still be useless: >>> >>> 1. Case: You read POM files to create an object model. Here, you would >>> gain nothing except you'd have to look for new bugs. >>> >>> 2. Case: You read POM files to filter them. Here the StAX API is useless >>> because it throws too much information away, so this code would have to be >>> written from scratch using an incompatible API anyway, no matter how you >>> solve it. >>> >>> That said, I've written a Maven search'r'replace tool using DecentXML. >>> It's standalone (no dependencies besides DecentXML and Java's rt.jar), it >>> can search pom.xml files with certain elements/texts and on these files, it >>> can print certain parts (search), check that certain parts have certain >>> values (for example, that all parent elements have the right version in >>> them) and it can replace existing values with new ones. >>> >>> The source is roughly 400 lines: >>> http://code.google.com/p/decentxml/source/browse/trunk/src/test/java/de/pdark/decentxml/MavenSNR.java?r=34 >>> >>> What I would like to see is that Maven keeps the StAX API internally to >>> build the POM and to do its job. Only when a plugin needs to *manipulate* >>> XML that a *user* has written *by hand*, it should use DecentXML. Currently, >>> I know only of these plugins which fall into that category: >>> >>> - archetype >>> - war >>> - version >>> >>> All other plugins wouldn't gain enough from a transition to make the >>> effort worthwhile. >>> >> >> I actually think that this can be done... but only using the >> EventReader/EventWriter model. >> >> All the XMLEvents returned by the XMLEventReader are just interfaces. >> >> You store in a concrete class for each type of event the information you >> need. In fact I'm writing an implementation just now. >> >> The XMLEventWriter then takes the events back... if they are the events >> that originated from my XMLEventReader, then I just use the exact padding >> and prefixing, etc that was read in... if they are new events that >> originated from elsewhere, I examine how previous events were formatted and >> try to replicate that. >> >> I agree that the cursor interface of StAX will not do what we need... but >> the Event interface can, as I suspected... but needed to confirm, do exactly >> what we need... and I am in the process of writing an implementation. >> >> The only issue that I could see blocking me is how the StAX specification >> defines the handling of CR, LF and CR/LF pairs. I suspect that I can stash >> this information when reading provided the XMLEventReader is constructed >> from the _correct_ stream. >> >> -Stephen. >> >> >> >>> >>> >>> Regards, >>> >>> -- >>> Aaron "Optimizer" Digulla a.k.a. Philmann Dark >>> "It's not the universe that's limited, it's our imagination. >>> Follow me and I'll show you something beyond the limits." >>> http://www.pdark.de/ >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> >