2011-12-23 4 views
0

Я хотел бы получить некоторые конкретные значения в файле (x) html с помощью инструкции xpath.
Я читал html-файл, как xml-файл, используя класс xmlDocument.
Проблема заключается в том, что мой запрос XPath не работает из-за пространства имен, определенного в HTML тег:Как управлять xmlns для выполнения запроса xpath?

<html xmlns="http://www.w3.org/1999/xhtml"> 

Если я удалить Xmlns в HTML тег, он отлично работает.
Что случилось? (Я не хочу использовать Html Agility Pack)
Спасибо!
Вот мой код:

XmlDocument readDoc = new XmlDocument(); 
System.Xml.XmlNamespaceManager xmlnsManager = new System.Xml.XmlNamespaceManager(readDoc.NameTable); 
readDoc.XmlResolver = null; 
xmlnsManager.AddNamespace("html", "http://www.w3.org/1999/xhtml"); 
readDoc.Load("myHTML.html"); 
int count = readDoc.SelectNodes("//html/body/div/span[@class='layout']",xmlnsManager).Count; 

ответ

0

Поскольку ваш элемент находится в пространстве имен, ваше XPath заявление должно включать пространство имен слишком (в том числе и для суб-элементов) ...

int count = readDoc.SelectNodes("//html:html/html:body/html:div/html:span[@class='layout']",xmlnsManager).Count; 
+0

отлично работает! Большое спасибо! –

Смежные вопросы