`-: 55: Ошибка синтаксического анализатора HTML: htmlParseEntityRef: Ожидается ';'`: очистить файл HTML с помощью xmllint? - PullRequest
0 голосов
/ 02 ноября 2019

http://journals.im.ac.cn/cjbcn/ch/reader/view_abstract.aspx?file_no=gc19010159&flag=1

Я хочу очистить файл с вышеуказанного URL. Но xmllint выдает следующую ошибку. Кто-нибудь знает, как решить проблему? Спасибо.

$ xmllint -html -xmlout file.html
-:55: HTML parser error : htmlParseEntityRef: expecting ';'
ges/dh-img.jpg"><A href="../common_item.aspx?parent_id=20070610225413001&menu_id
                                                                               ^
-:55: HTML parser error : htmlParseEntityRef: expecting ';'
on_item.aspx?parent_id=20070610225413001&menu_id=20070610225740001&is_three_menu
                                                                               ^
-:55: HTML parser error : htmlParseEntityRef: expecting ';'
ges/dh-img.jpg"><A href="../common_item.aspx?parent_id=20070610225449001&menu_id
                                                                               ^
-:55: HTML parser error : htmlParseEntityRef: expecting ';'
on_item.aspx?parent_id=20070610225449001&menu_id=20171222045531778&is_three_menu
                                                                               ^
-:55: HTML parser error : htmlParseEntityRef: expecting ';'
ges/dh-img.jpg"><A href="../common_item.aspx?parent_id=20070610225428001&menu_id
                                                                               ^
-:55: HTML parser error : htmlParseEntityRef: expecting ';'
...

1 Ответ

0 голосов
/ 02 ноября 2019

Это, похоже, проблема с символом амперсанда, используемым в URL-адресах с параметрами запроса, которые xmllint хочет интерпретировать как ссылку на сущность, а затем жалуется, потому что ссылки на сущности в XML должны заканчиваться точкой с запятой (в отличие от SGML, гдеточка с запятой требуется только в том случае, если последующие символы являются символами имени). Вы можете попробовать опцию «-noent» в xmllint, но я не верю, что xmllint можно попросить игнорировать ссылки на сущности и предложить использовать другой инструмент для преобразования HTML в XML, такой как «sgmlproc», как описано в моем руководстве по синтаксическому анализу HTML. Здесь подробно обсуждается работа с символами амперсанда и использование HTML DTD, в котором href и другие атрибуты, имеющие тип URL, объявляются так, что ссылки на сущности не распознаются.

Извините за длинный ответ и саморекламу, ноЯ не знаю лучшего решения для вашей проблемы. Первоначально я хотел, чтобы это был комментарий, но не хватило места.

...