Java Sax解析器:忽略HTML

Java Sax解析器:忽略HTML,java,parsing,sax,Java,Parsing,Sax,我正在使用sax解析器解析XML文件。它工作得很好,但我不想解析标记的内容,因为它包含要保存为字符串的HTML。谁能告诉我有什么办法可以做这件事吗 谢谢这是伪代码。使用前进行调整。使用风险自负 这将不会考虑嵌套在外部信息标记中的标记 init: ignore = false; startElement: if (!ignore) { if (element.name == "info") { ignore = true; } else { pro

我正在使用sax解析器解析XML文件。它工作得很好,但我不想解析
标记的内容,因为它包含要保存为字符串的HTML。谁能告诉我有什么办法可以做这件事吗


谢谢这是伪代码。使用前进行调整。使用风险自负

这将不会考虑嵌套在外部信息标记中的标记

init:
  ignore = false;

startElement:
  if (!ignore) {
    if (element.name == "info") {
      ignore = true;
    } else {
      process normally
    }
 }

endElement:
  if (ignore) {
    if (element.name == "info") {
      ignore = false;
    }
  } else {
    process normally
  }

尽管是个问题。最好是预处理流,转义
之间的部分。例如,您可以围绕输入流编写一个包装器,动态地转换您的输入,这样SAX解析器得到的只是有效的XML。

您的XML很大吗?如果没有-您可以将其全部加载到一个字符串中,然后使用XPath查询访问感兴趣的节点

,但他仍然会获得HTML部分的SAX事件,对吗?所以一个未关闭的

会破坏一切。这是真的。这假设HTML是有效的XML。如果这是一个问题,那么我的另一个解决方案是将XML作为字符串抓取,使用RegExp去掉所有在和包括info标记之间运行的代码,然后发送其余代码进行正常的XML解析。RegExp被认为不适合解析XML或HTML,但只要信息标记不是嵌套的,并且不出现在文本字符串中,它就应该可以了。预处理看起来是个不错的主意,谢谢!。我会在它得到信息标签后加入一个cdata标签。