作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的示例页面。我想将一个标签的所有内部文本都放到一个字符串中。我为此编写了代码,但它无法正常工作
<body>
<div id="infor">
<div id="genres">
<a href="#" >Animation</a>
<a href="#" >Short</a>
<a href="#" >Action</a>
</div>
</div>
</body>
我想将 All 标签的内部文本转换为一个字符串,我使用这段代码来实现它,但它无法正常工作。
class Values
{
private HtmlAgilityPack.HtmlDocument _markup;
HtmlWeb web = new HtmlWeb(); //creating object of HtmlWeb
form1 frm = new form1;
_markup = web.Load("mypage.html"); // load page
public string Genres
{
get
{
HtmlNodeCollection headers = _markup.DocumentNode.SelectNodes("//div[contains(@id, 'infor')]/a"); // I filter all of <a> tags in <div id="infor">
if (headers != null)
{
string genres = "";
foreach (HtmlNode header in headers) // I'm not sure what happens here.
{
HtmlNode genre = header.ParentNode.SelectSingleNode(".//a[contains(@href, '#')]"); //I think an error occurred in here...
if (genre != null)
{
genres += genre.InnerText + ", ";
}
}
return genres;
}
return String.Empty;
}
}
frm.text1.text=Genres;
}
text1(返回值)是:
Animation, Animation, Animation,
但我想要这样的输出:
Animation, Short, Action,
最佳答案
我认为,使用一点 Linq 和使用 Descendants 会让你更容易做到这一点。
var genreNode = _markup.DocumentNode.Descendants("div").Where(n => n.Id.Equals("genre")).FirstOrDefault();
if (genreNode != null)
{
// this pulls all <a> nodes under the genre div and pops their inner text into an array
// then joins that array using the ", " as separator.
return string.Join(", ", genreNode.Descendants("a")
.Where(n => n.GetAttributeValue("href", string.Empty).Equals("#"))
.Select(n => n.InnerText).ToArray());
}
关于c# - 如何获取多个<a>标签的内文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10704770/
我想开发一个 Skype 机器人,它将用户名作为输入,并根据用户输入以相反的字符大小写表示hello username。简而言之,如果用户输入他的名字 james,我的机器人会回复他为 Hello J
我是一名优秀的程序员,十分优秀!