2010-04-07 8 views
1

Je suis en train d'analyser une instruction de traitement comme celui-ci à l'aide Stax:instruction de traitement Stax

<?item something="<some_element></some_element>"?> 

Stax ne semble pas reconnaître comme une instruction de traitement. Il trouve ces événements:

< - CharacterEvent 
?item something=" - CharacterEvent 
<some_element> - StartEvent 
</some_element> - EndEvent 
"?> - CharacterEvent 

Ne doit pas être considéré comme le tout un événement unique ProcessingInstruction?

Répondre

2

Fonctionne comme prévu pour moi. Ce code:

String xml = "<?item something=\"<some_element></some_element>\"?><foo></foo>"; 
XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(new StringReader(xml)); 
while (reader.hasNext()) { 
    final XMLEvent event = reader.nextEvent(); 
    System.out.println(event + " - " + event.getClass().getSimpleName()); 
} 

Prints ceci:

<?xml version="1.0" encoding='null' standalone='no'?> - StartDocumentEvent 
<?itemsomething="<some_element></some_element>"?> - ProcessingInstructionEvent 
<foo> - StartElementEvent 
</foo> - EndElementEvent 
ENDDOCUMENT - EndDocumentEvent 

qui est avec Java 6. version Qu'est-ce que Java utilisez-vous?

+0

intéressant - j'utilise Java 5 ... –

+2

@Drew: autant que je sache, cela doit signifier que vous utilisez une implémentation StAX tierce car elle est seulement devenue une partie du JDK dans Java 6. Donc Je verrais s'il y a une mise à jour pour cette bibliothèque ou si c'est un bug connu. –

+0

Merci pour l'aide et me mettre sur le bon chemin. Le problème n'était pas lié à StAX, comme vous l'avez souligné. Je manipulais le xml avant de l'envoyer à StAX (échappant au premier "<"), ce qui causait le problème. FYI ... il semble que StAX ait été inclus dans Java 5 (http://java.sun.com/javaee/5/docs/api/javax/xml/stream/package-summary.html) –

Questions connexes