2010-04-07 57 views
1

我試圖解析像這樣使用StAX的處理指令:斯塔克斯處理指令

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

的StAX似乎沒有認識到這是一個處理指令。它發現這些事件:

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

不應該將整個事件視爲單個ProcessingInstruction事件嗎?

回答

2

按預期爲我工作。此代碼:

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()); 
} 

打印此:

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

即與Java 6.什麼Java版本是您使用?

+0

有趣 - 我使用Java 5 ... – 2010-04-07 15:38:49

+2

@Drew:據我所知,這意味着您使用的是第三方StAX實現,因爲它只成爲Java 6中JDK的一部分。我會看看是否有該庫的更新,或者它是否是已知的錯誤。 – 2010-04-07 15:41:07

+0

感謝您的幫助,並將我放在正確的道路上。正如你指出的那樣,這個問題與StAX無關。在將它發送到StAX(轉義第一個「<」)之前,我正在操縱xml,這導致了問題。 僅供參考......看起來StAX包含在Java 5中(http://java.sun.com/javaee/5/docs/api/javax/xml/stream/package-summary.html) – 2010-04-07 16:01:42