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]
>
>

Reply via email to