java utiliser StAX pour obtenir les enfants des éléments dans un générique de la mode

Je suis en train d'utiliser StAX (déjà que je n'aime pas....)
Il semble que la seule façon de l'utiliser est en continu les conditions if-else.
Mais le plus important, il semble y avoir aucun moyen d'associer un élément à ses enfants, à moins que l'un sait à l'avance le
la structure du document xml pour être analysée.Est-ce correct?
J'ai essayé ce qui suit:
J'ai ce code xml dans une Chaîne

<ns1:Root xmlns:ns1=\"http://rootNameSpace.com/\">
<ns1:A/>
<ns1:B>
        <Book xmlns=\"http://www.myNameSpace.com\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
            <Data>
                <Author>John</Author>
                <Edition>1</Edition>
                <PubHouse>Small Publishing House</PubHouse>
                <Price>37.8</Price>
            </Data>
        </Book>
</ns1:B>
</ns1:Root>

Je voudrais utiliser StAX pour obtenir l'élément de Livre, mais il semble que je ne peux écrire du code qui a codé en dur toute la structure.
I. e. Utilisation XMLEventReader et une fois
vous obtenez Livre, de début de boucle pour les Données,Auteur etc.
Est-il un générique solution?
J'ai essayé ce qui suit pour obtenir autour de cette: j'ai essayé d'aller de Chaîne à XMLEventReader et retour à la Chaîne, mais je ne peux pas obtenir l'exacte représentation de Chaîne que j'ai utilisé (les espaces de noms sont entre parenthèses, en sus des deux-points, etc).

StringBuilder xml = new StringBuilder();
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
String msg = "<ns1:Root xmlns:ns1=\"http://rootNameSpace.com/\"><ns1:A/><ns1:B><Book xmlns=\"http://www.myNameSpace.com\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Data><Author>John</Author><Edition>1</Edition><PubHouse>Small Publishing House</PubHouse><Price>37.8</Price></Data></Book></ns1:B></ns1:Root>";
InputStream input = new ByteArrayInputStream(msg.getBytes("UTF-8"));
XMLEventReader xmlEventReader = inputFactory.createXMLEventReader(input);
while (xmlEventReader.hasNext())
{

    XMLEvent event = xmlEventReader.nextEvent();
    StringWriter sw = new StringWriter();
    event.writeAsEncodedUnicode(sw);
   xml.append(sw);

}
System.out.println(xml);

Je reçois le texte suivant:

<?xml version="1.0" encoding='UTF-8' standalone='no'?><['http://rootNameSpace.com/']:ns1:Root xmlns:ns1='http://rootNameSpace.com/'><['http://rootNameSpace.com/']:ns1:A></ns1:A><['http://rootNameSpace.com/']:ns1:B><['http://www.myNameSpace.com']::Book xmlns:='http://www.myNameSpace.com' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><['http://www.myNameSpace.com']::Data><['http://www.myNameSpace.com']::Author>John</Author><['http://www.myNameSpace.com']::Edition>1</Edition><['http://www.myNameSpace.com']::PubHouse>Small Publishing House</PubHouse><['http://www.myNameSpace.com']::Price>37.8</Price></Data></Book></ns1:B></ns1:Root>

Peut en ce cas être abordé par le biais StAX ou DOM est la seule solution?

OriginalL'auteur Cratylus | 2010-11-24