我有一个XML格式的消息的JMS队列文件,通过WebLogic 11G导出。
在此文件中有各种特殊字符,例如< > "
我写了一个stAX解析器来从这个文件中提取特定的消息,但作为解析的一部分,特殊字符会自动转换(例如<
转换为<
)。
我需要将我的简化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元素包含:"A bit of text"
,则事件/数据已转换为"A bit of text"
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
XML解析器将始终以这种方式“扩展”内置实体和字符引用。当你编写XML时,你应该使用一个反向的库,即将特殊字符转换回实体/字符引用。