Обходной путь для ошибки "необъявленный префикс" на XElement.Нагрузка()

я вытаскиваю источник веб-сайта. Затем я хочу извлечь из него определенную часть. Я намерен сделать это с помощью LINQ-to-XML.

тем не менее, я получаю ошибки при разборе источника:

XElement source = XElement.Load(reader);

проблема, похоже, в ссылках на пространства имен, которых у меня нет. Я получаю сообщение об ошибке:'addthis' is an undeclared prefix. Line 130, position 51. из-за этой строки:

<div class="addthis_toolbox addthis_pill_combo" addthis:url="http://www.foo.com/foo">

и если я удалю это, произойдет другое.

дело в том, я забочусь только об одной части этого XML-файла-I не нужно разбирать весь файл. Я просто хочу, чтобы это было в Кселементе, чтобы я мог найти эту часть. Есть ли способ для меня взломать ошибку синтаксического анализа? И мне нужно общее решение - я хочу разобрать файл независимо от любого undeclared prefix ошибки.

спасибо

1 ответов


этот XML недопустим.

для использования префикса пространства имен (например,addthis:), пространство имен должно быть объявлено, написав xmlns:addthis="some URI".

В общем, вы не должны анализировать HTML с помощью синтаксического анализатора XML, так как HTML, вероятно, будет недопустимым XML, по этой причине и по ряду других причин (необъявленные сущности, неоткрытые JS, незамкнутые теги).
Вместо этого используйте HTML Agility Pack.