Обходной путь для ошибки "необъявленный префикс" на 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.