如何解析完整的数据转发和放大在java sax解析器中

时间:2016-05-11 10:49:25

标签: java parsing sax

请帮我解决这个问题: 我在java中使用sax解析器解析一些xml文件。但是,当解析器检测到&它不会进一步解析当前行并转移到解析下一个元素。

我尝试过StringEscapeUtils.escapeHtml(String),但它没有用。

提前致谢。

1 个答案:

答案 0 :(得分:0)

当遇到&或其他分隔符时,SAXParser会将文本元素拆分为一个或多个单独的块。

我是这样做的,在startElement回调中读取当前元素名称,将其存储在某处,连接块。

@Override public void characters(char[] ch, int start, int length) throws SAXException {
    super.characters(ch, start, length);
    String value = new String(ch, start, length);
    String oldval = cachedProps.get(elemName);
    if (oldval!=null) value = oldval+value;
    cachedProps.put(elemName, value);
}

您可能希望学习StAXParser以将XML文件作为流读取。它通常更适合和自​​己的应用程序可控制。 SAX回调接口有时候很难用。

  • DOM =打开文件时读入RAM的所有内容
  • SAX =流媒体,“推送”回拨模式
  • StAX =流媒体,“拉”模式