如何管理xmlns以执行xpath查询

本文关键字:执行 xpath 查询 xmlns 何管理 管理 | 更新日期: 2023-09-27 18:18:53

我想使用xpath语句在(x)html文件中获得一些特定的值。
我使用xmlDocument类像读取xml文件一样读取html文件。
问题是我的xpath查询不工作,因为在html标记中定义的名称空间:

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

如果我删除html标签中的xmlns,它工作得很好。
怎么了?(我不想使用Html敏捷包)
谢谢!
下面是我的代码:

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;

如何管理xmlns以执行xpath查询

由于元素位于名称空间中,因此XPath语句也必须包含名称空间(包括子元素)…

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