HtmlAgilityPack - 如何通过Id获取标签?

40

我有一个任务要完成。我需要检索特定 id (该 id 基于用户输入)的 taghref

例如,我有一个像这样的 html

<manifest>

<item href="Text/Cover.xhtml" id="Cov" media-type="application/xhtml+xml" />
    <item href="Text/Back.xhtml" id="Back" media-type="application/xhtml+xml" />
  </manifest>

我已经有这段代码了。请帮助我。谢谢。

HtmlAgilityPack.HtmlDocument document2 = new 

HtmlAgilityPack.HtmlDocument();
document2.Load(@"C:\try.html");
HtmlNode[] nodes = document2.DocumentNode.SelectNodes("//manifest").ToArray();

foreach (HtmlNode item in nodes)
{
    Console.WriteLine(item.InnerHtml);
}
2个回答

63

如果我理解正确,那么:

HtmlAgilityPack.HtmlDocument document2 = new HtmlAgilityPack.HtmlDocument();
document2.Load(@"C:\try.html");

string tag = document2.GetElementbyId("yourid").Name;
string href = document2.GetElementbyId("yourid").GetAttributeValue("href", "");

这个应该递归地工作吗?它对我不起作用。 - Christian Findlay

8
您可以使用以下XPath通过其id属性值查找item元素:
var id = "Back";
var query = $"//manifest/item[@id='{id}']";
HtmlNode node = document2.DocumentNode.SelectSingleNode(query);
string href = node.GetAttributeValue("href", "");

如果您不熟悉($)符号,它是一个字符串插值运算符。请参考链接:https://msdn.microsoft.com/en-us/library/dn961160.aspx?f=255&MSPPError=-2147217396 - har07
类似这样吗?但是我怎么才能得到那段代码的输出呢?我的操作正确吗?因为它在运行时给了我一个错误。对不起,我的问题有点蠢。 HtmlAgilityPack.HtmlDocument document2 = new HtmlAgilityPack.HtmlDocument(); document2.Load(@"C:\try.html"); var id = "Back"; var query = $"//manifest/item[@id='{id}']"; HtmlNode node = document2.DocumentNode.SelectSingleNode(query); MessageBox.Show(node.ToString()); - knowme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接