2015-10-20 20 views
0

我有一個XML格式的消息的JMS隊列文件,通過WebLogic 11G導出。停止StAX分析器轉換導出的WebLogic JMS XML文件中的特殊字符

在這個文件中有各種特殊字符,例如, < > "

我寫了一個STAX解析器從該文件中提取特定的信息,但作爲解析的一部分,特殊字符自動轉換(例如&lt;轉換爲<)。

我需要進口我切下的XML文件放回在WebLogic中另一個JMS隊列,但它不會導入,除非特殊字符的原始格式。

有沒有辦法做到這一點,而不必手動轉換它們之後呢?

File inFile = new File(...); 

XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 
inputFactory.setProperty(XMLInputFactory.IS_COALESCING, true); 

XMLEventReader eventReader = inputFactory.createXMLEventReader(new FileInputStream(inFile)); 

while (eventReader.hasNext()) { 
    XMLEvent event = eventReader.nextEvent(); 

    if (event.isCharacters()) { 
     System.out.println("Chars: " + event.asCharacters().getData()); 
    } 
} 

如果XML元素的一個包含:&quot;A bit of text&quot;,當我在調試模式下運行,事件/數據已被轉換爲"A bit of text"

任何幫助將不勝感激。

謝謝。

回答

1

XML解析器將以這種方式總是「擴展」內置的實體和字符引用。在編寫XML時,應該使用反轉的庫,即將特殊字符轉換回實體/字符引用。