import 'dart:convert'; import 'package:html/parser.dart' as html; import '../domain/exam_schedule.dart'; import '../features/school/school_exam_adapter.dart'; import '../features/school/undergraduate/exam_adapter.dart'; class ExamFileImport { static ExamSchedule parse(String content) { if (utf8.encode(content).length > 2 * 1024 * 1024) throw const FormatException('文件不能超过2MB'); final doc = html.parse(content.replaceFirst('\uFEFF', '')); if (doc.querySelector('#stdExamTableForm') != null) return UndergraduateExamAdapter.extract(content); if (doc.querySelector('#sample-table-1') != null) return SchoolExamAdapter.extract(content); throw const FormatException('未识别到学校排考页面'); } }