停止StAX解析器转换导出的WebLogic JMS XML文件中的特殊字符

时间:2015-10-20 18:14:07

标签: java xml weblogic-10.x stax

我有一个XML格式的消息的JMS队列文件,通过WebLogic 11G导出。

在此文件中有各种特殊字符,例如< > "

我写了一个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 个答案:

答案 0 :(得分:1)

XML解析器将始终以这种方式“扩展”内置实体和字符引用。当你编写XML时,你应该使用一个反向的库,即将特殊字符转换回实体/字符引用。