C# 从C中的链接列表递归创建手风琴html#
我正在抓取一个远程页面的链接,我在一个列表中。我正试图打印出jquery手风琴所需的列表。我的html没有问题,但是我的循环有点不正常,没有正确嵌套 以下是列表的一个示例:C# 从C中的链接列表递归创建手风琴html#,c#,recursion,html-lists,html-agility-pack,C#,Recursion,Html Lists,Html Agility Pack,我正在抓取一个远程页面的链接,我在一个列表中。我正试图打印出jquery手风琴所需的列表。我的html没有问题,但是我的循环有点不正常,没有正确嵌套 以下是列表的一个示例: <a href="#heading1">Heading 1</a> <a href="link1.html">link1</a> <a href="link2.html">link2</a> <a href="link3.html">link
<a href="#heading1">Heading 1</a>
<a href="link1.html">link1</a>
<a href="link2.html">link2</a>
<a href="link3.html">link3</a>
<a href="#heading2">Heading 2</a>
<a href="link4.html">link4</a>
<a href="link5.html">link5</a>
<a href="link6.html">link6</a>
下面是我需要如何格式化html的方法:
<div data-role="collapsible" data-collapsed="true">
<h3>Heading 1</h3>
<p>
<ul>
<li><a href="link1.html">link1</a></li>
<li><a href="link2.html">link2</a></li>
<li><a href="link3.html">link3</a></li>
</ul>
</p>
</div>
<div data-role="collapsible" data-collapsed="true">
<h3>Heading 2</h3>
<p>
<ul>
<li><a href="link4.html">link4</a></li>
<li><a href="link5.html">link5</a></li>
<li><a href="link6.html">link6</a></li>
</ul>
</p>
</div>
标题1
标题2
这是我到目前为止的代码,应该提到的是,我正在使用HTMLAgilityPack:
HtmlNodeCollection OneHome = document.DocumentNode.SelectNodes("//div[@id='accordion1']");
var OneHomelinks = OneHome.Descendants("a")
.Select(a => a.OuterHtml)
.ToList();
foreach (string link in OneHomelinks)
{
if (link.Contains('#'))
{
Response.Write("<div data-role=\"collapsible\" data-collapsed=\"true\">");
Response.Write("<h3>" + link + "</h3>");
Response.Write("<p>");
Response.Write("<ul>");
}
if (!link.Contains('#'))
{
Response.Write("<li>" + link + "</li>");
} else {
Response.Write("</ul>");
Response.Write("</p>");
Response.Write("</div>");
}
}
HtmlNodeCollection-OneHome=document.DocumentNode.SelectNodes(“//div[@id='accordion1']”);
var OneHomelinks=OneHome.substands(“a”)
.选择(a=>a.OuterHtml)
.ToList();
foreach(OneHomeLink中的字符串链接)
{
if(link.Contains('#'))
{
回答。写(“”);
响应。写入(“+link+”);
响应。写入(“”);
响应。写入(“”);
}
如果(!link.Contains('#'))
{
响应。写(“- ”+链接+”
”;
}否则{
响应。写入(“
”);
回答。写(“”);
回答。写(“”);
}
}
基本上,我试图通过使用href中的“#”来提取标题,并在该点上重置标题-但是出现了一些问题,列表的格式不正确。在此,我们非常感谢您的帮助
电流输出
<div data-role="collapsible" data-collapsed="true">
<h3>Heading 1</h3>
<p></p>
<ul></ul>
<p></p>
</div>
<li><a href="link1.html>link1</a></li>
<li><a href="link2.html>link2</a></li>
<li><a href="link3.html>link3</a></li>
<div data-role="collapsible" data-collapsed="true">
<h3>Heading 2</h3>
<p></p>
<ul></ul>
<p></p>
</div>
<li><a href="link4.html>link4</a></li>
<li><a href="link5.html>link5</a></li>
<li><a href="link6.html>link6</a></li>
标题1
标题2
编辑:逻辑错误,哇
再次使用逻辑布局编辑2:
我认为这应该适合你:
HtmlNodeCollection OneHome = document.DocumentNode.SelectNodes("//div[@id='accordion1']");
var OneHomelinks = OneHome.Descendants("a")
.Select(a => a.OuterHtml)
.ToList();
var headerCount = 0;
foreach (string link in OneHomelinks)
{
var prevCounter = headerCount;
if (link.Contains('#'))
{
headerCount++;
if (headerCount != 1 && headerCount > prevCounter) {
Response.Write("</ul>");
Response.Write("</p>");
Response.Write("</div>");
}
Response.Write("<div data-role=\"collapsible\" data-collapsed=\"true\">");
Response.Write("<h3>" + link + "</h3>");
Response.Write("<p>");
Response.Write("<ul>");
}
else {
Response.Write("<li>" + link + "</li>");
}
}
Response.Write("</ul>");
Response.Write("</p>");
Response.Write("</div>");
HtmlNodeCollection-OneHome=document.DocumentNode.SelectNodes(“//div[@id='accordion1']”);
var OneHomelinks=OneHome.substands(“a”)
.选择(a=>a.OuterHtml)
.ToList();
var headerCount=0;
foreach(OneHomeLink中的字符串链接)
{
var prevCounter=总计数;
if(link.Contains('#'))
{
headerCount++;
if(headerCount!=1&&headerCount>prevCounter){
响应。写入(“”);
回答。写(“”);
回答。写(“”);
}
回答。写(“”);
响应。写入(“+link+”);
响应。写入(“”);
响应。写入(“”);
}
否则{
响应。写(“- ”+链接+”
”;
}
}
响应。写入(“
”);
回答。写(“”);
回答。写(“”);
what's your current outputsidenote your art=:OCloser-现在它将所有内容包装为单个- ,并在每次找到标题时将所有内容嵌套到更深的x1级别。我看到我的逻辑位置被复制而不是移动,这次我已真实更新了代码。:)仍然在第一个
- 中嵌套所有内容,这里有一个屏幕截图:啊,是的,我想我明白为什么了。再次更新。