【问题标题】:Stop StAX parser converting special characters in exported WebLogic JMS XML file停止 StAX 解析器在导出的 WebLogic JMS XML 文件中转换特殊字符
【发布时间】:2015-10-20 18:14:07
【问题描述】:

我有一个 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"

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: java xml weblogic-10.x stax


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      相关资源
      最近更新 更多