Я пытаюсь разобрать простой фрагмент HTML с помощью NekoHTML:
<h1>This is a basic test</h1>
Для этого я установил особенность Neko , чтобы тег HTML, HEAD или BODY не вызывал обратный вызов startElement (..).
К сожалению, это не работает для меня ... Я, конечно, что-то упустил, но не могу понять, что это будет.
Вот очень простой код для воспроизведения моей проблемы:
public static class MyContentHandler implements ContentHandler {
public void characters(char[] ch, int start, int length) throws SAXException {
String text = String.valueOf(ch, start, length);
System.out.println(text);
}
public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributes) throws SAXException {
System.out.println(rawName);
}
public void endElement(String nameSpaceURI, String localName, String rawName) throws SAXException {
System.out.println("end " + localName);
}
}
И main () для запуска теста:
public static void main(String[] args) throws SAXException, IOException {
SAXParser saxReader = new SAXParser();
// set the feature like explained in documentation : http://nekohtml.sourceforge.net/faq.html#fragments
saxReader.setFeature("http://cyberneko.org/html/features/balance-tags/document-fragment", true);
saxReader.setContentHandler(new MyContentHandler());
saxReader.parse(new InputSource(new StringInputStream("<h1>This is a basic test</h1>")));
}
Соответствующий вывод:
HTML
HEAD
end HEAD
BODY
H1
This is a basic test
end H1
end BODY
end HTML
тогда как я ожидал
H1
This is a basic test
end H1
Есть идеи?