Java Sax解析器:忽略HTML
我正在使用sax解析器解析XML文件。它工作得很好,但我不想解析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
标记的内容,因为它包含要保存为字符串的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标签。