이것은 내 HTML 코드입니다. <li id="item1">
, <li id="item2">
첫 번째 링크를 선택하는 방법 (기본 링크 1, 기본 링크 2, ...)
<div id="mainmenu">
<div class="wrapper">
<div class="main-menu">
<ul class="navigation">
<li class="menu-group">
<ul>
<li id="item1">
<a href="/">Main link 1</a>
<div id="item1-sub">
<ul>
<li>
<a href="#1">subLink1</a>
</li>
<li>
<a href="#1">subLink2</a>
</li>
</ul>
</div>
</li>
<li id="item2">
<a href="/">Main link 2</a>
<div id="item2-sub">
<ul>
<li>
<a href="#1">subLink1</a>
</li>
<li>
<a href="#1">subLink2</a>
</li>
</ul>
</div>
</li>
</ul>
</li>
</ul>
</div>
</div>
C # 코드 : 이 코드에는 문제가 있습니다. 누군가가 문제를 해결하는 데 도움이되기를 바랍니다.
var webGet = new HtmlWeb();
var document = webGet.Load("file.html");
var menuGroup = document.DocumentNode.SelectNodes("//div[@id='mainmenu']//div[@class='wrapper']//div[@class='main-menu']//ul[@class='navigation']//li[@class='menu-group']//ul//li");
if (menuGroup != null)
{
foreach (var Tag in menuGroup)
{
var atag = Tag.SelectSingleNode("./a");
}
}
너는 할 수있어.
var html = "<html><head></head><body><div id=\"mainmenu\"><div class=\"wrapper\"><div class=\"main-menu\"><ul class=\"navigation\"><li class=\"menu-group\"><ul><li id=\"item1\">" +
"<a href=\"/\">Main link 1</a><div id=\"item1-sub\"><ul><li><a href=\"#1\">subLink1</a></li><li><a href=\"#1\">subLink2</a></li></ul></div></li><li id=\"item2\">" +
"<a href=\"/\">Main link 2</a><div id=\"item2-sub\"><ul><li><a href=\"#1\">subLink1</a></li><li><a href=\"#1\">subLink2</a></li></ul></div></li></ul></li></ul></div></div></div></body></html>";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var mainLink1 = doc.DocumentNode.SelectSingleNode("//li[@id='item1']//a");
var linkUrl1 = mainLink1.Attributes["href"].Value;
var linkText1 = mainLink1.InnerText;
var mainLink2 = doc.DocumentNode.SelectSingleNode("//li[@id='item2']//a");
var linkUrl2 = mainLink2.Attributes["href"].Value;
var linkText2 = mainLink2.InnerText;
산출:
편집하다:
다음 코드를 사용하여 루프가있는 기본 링크를 가져옵니다. 그러면 원하는 링크 만 선택됩니다.
foreach (var div in doc.DocumentNode.SelectNodes("//li[@class='menu-group']//ul//li//div"))
{
div.InnerHtml = string.Empty;
}
foreach (var a in doc.DocumentNode.SelectNodes("//li[@class='menu-group']//ul//li//a"))
{
var linkUrl = a.Attributes["href"].Value;
var linkText = a.InnerText;
}