У меня большие партии файлов XHTML, которые обновляются вручную. Во время фазы обзора обновлений я хотел бы программно проверить правильность файлов.
В настоящее время я использую XmlReader , но время, необходимое для среднего процессора, намного больше, чем я ожидал.
Размер файлов XHTML варьируется от 4 КБ до 40 КБ, и проверка занимает несколько секунд на файл. Проверка необходима, но я бы хотел, чтобы время было как можно короче, поскольку проверка выполняется во время чтения файлов на следующем шаге процесса.
Есть ли более быстрый способ сделать простую проверку правильности XML? Может быть, с использованием внешних библиотек XML?
Я могу подтвердить, что проверка «обычного» содержимого на основе XML молниеносно выполняется с помощью XmlReader, и, как предполагается, проблема, по-видимому, связана с тем, что DTD XHTML читается при каждой проверке файла.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Обратите внимание, что в дополнение к DTD также загружаются соответствующие файлы .ent (xhtml-lat1.ent, xhtml-symbol.ent, xhtml-special.ent).
Поскольку полное игнорирование DTD на самом деле не вариант для XHTML, поскольку правильная формация тесно связана с допустимыми объектами HTML (например, & nbsp; будет быстро вводить ошибки проверки, когда мы игнорируем DTD).
Проблема была решена путем использования пользовательского XmlResolver в соответствии с предложением в сочетании с локальными (встроенными) копиями файлов DTD и сущностей.
Я опубликую решение здесь, как только уберу код