2015-10-20 24 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时,应该使用反转的库,即将特殊字符转换回实体/字符引用。