Подсчёт тегов с помощью SAXParser
Я пытаюсь подсчитать количество тегов на html странице, но выводится такая ошибка:The markup in the document preceding the root element must be well-formed. Подскажите пожалуйста, как это можно исправить?
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/CounttableWithSAX")
public String counttables(@RequestParam(value = "url", defaultValue = "https://example.com") String url) throws ParserConfigurationException, SAXException {
SAXParserFactory factory = SAXParserFactory.newInstance();
int count = 0;
try {
SAXParser saxParser = factory.newSAXParser();
System.out.println("teg table");
CountElementHandlerSax countStaffHandler =
new CountElementHandlerSax("table");
saxParser.parse(url, countStaffHandler);
count = countStaffHandler.getCount();
System.out.println("count = "+ count);
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
return String.format("Кол - во тегов " + count );
}
}
//Класс счётчик
public class CountElementHandlerSax extends DefaultHandler {
private final String elementName;
private Integer count = 0;
public String getElementName() {
return elementName;
}
public Integer getCount() {
return count;
}
public CountElementHandlerSax(String elementName) {
this.elementName = elementName;
}
@Override
public void startElement(String uri, String localName,
String qName, Attributes attributes)
throws SAXException {
System.out.println("qname = "+qName);
if (qName.equalsIgnoreCase(getElementName())) {
count++;
}
}
}