我使用此代码从html“P”标签
返回文本HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(content);
string query = doc.DocumentNode.SelectSingleNode("//p/text()").InnerText;
if (query.Length >0)
{
query = query.Substring(0, 60) + "...";
}
> 这里的问题是,如果“P”标签包含另一个标签,则不会返回文本。对于前。
<p><img src="http://localhost:49171/Images/MyImages/80ef7d03-6a8b-49e2-a4da-fa9f5f1773dd.jpg" alt="" />Thank you for choosing Microsoft Windows 8.1 Pro. This is a license agreement between you and Microsoft Corporation (or, based on where you live, one of its affiliates) </p>
在我的代码中,查询返回“Images / MyImages / 80ef7d03-6a8b-49e2-a4da-fa9f5f1773dd.jpg”,
任何人都可以帮我回复一下“感谢您选择Microsoft Windows 8.1 Pro”。 而不是“Images / MyImages / 80ef7d03-6a8b-49e2-a4da-fa9f5f1773dd.jpg”。
提前致谢...
答案 0 :(得分:0)
由于HtmlAgilityPack中的每个文本节点都具有名称#text
,因此您可以执行以下操作:
string query = doc.DocumentNode.Descendants("p")
.First()
.ChildNodes.First(node => node.Name == "#text").InnerText;
这将获取文档中的第一个<p>
节点,并选择第一个文本节点的内部文本,该文本节点是<p>
节点的直接子节点。