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

Reply via email to