Предположительно, страница, которую вы пытаетесь проанализировать, недавно изменилась на XHTML, отсюда и пространства имен?
Согласно @JonSkeet, вам не следует устанавливать xmltr.Namespaces = false;
на вашем XmlTextReader
Вы можете либо
- охватывает пространства имен и использует XmlNameSpaceManager для управления пространством имен XHTML (
xmlns="http://www.w3.org/1999/xhtml"
).
- использовать независимое от пространства имен
xpath
, например local-name()
, которое будет игнорировать пространство имен: *
xml.SelectSingleNode("/*[local-name()='html']/*[local-name()='body']")
В любом случае, ваш код должен будет измениться, чтобы адаптироваться к пространствам имен, если только вы не взломаете пространство имен из XML перед его загрузкой.
*
Вы также можете использовать // с local-name()
, но будьте осторожны с документами с большим количеством элементов - это может стать очень медленным.