我希望能够选择每个项目是一个单独的列表。看看这个HTML:
<div class="services">
<a class="service selected" onclick="serviceNameClick('');" href="#">all</a>
<a class="service" onclick="serviceNameClick('12');" href="#">12</a>
<a class="service" onclick="serviceNameClick('14');" href="#">14</a>
<a class="service" onclick="serviceNameClick('14C');" href="#">14C</a>
<a class="service" onclick="serviceNameClick('N14');" href="#">N14</a>
<a class="service" onclick="serviceNameClick('14B');" href="#">14B</a>
<a class="service" onclick="serviceNameClick('27');" href="#">27</a>
<a class="service" onclick="serviceNameClick('12A');" href="#">12A</a>
<a class="service" onclick="serviceNameClick('27C');" href="#">27C</a>
<a class="service" onclick="serviceNameClick('N12');" href="#">N12</a>
<a class="service" onclick="serviceNameClick('14A');" href="#">14A</a>
</div>
能够将其显示为如下列表: 全部12 14 N14 14B 27 12A 27 N12 14A
我可以使用以下代码到达那里:
string htmlPage = "";
using (var client = new HttpClient())
{
htmlPage = await client.GetStringAsync("http://m.buses.co.uk/stop.aspx?stopid=" + stopIdVariable);
}
HtmlDocument htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(htmlPage);
List<Movie> movies = new List<Movie>();
foreach (var a in htmlDocument.DocumentNode.SelectNodes("//div[starts-with(@class, 'content')]"))
{
Movie newMovie = new Movie();
//newMovie.Cover = div.SelectSingleNode(".//div[@class='image']//img").Attributes["src"].Value;
// newMovie.Title = div.SelectSingleNode(".//h4[@itemprop='name']").InnerText.Trim();
// newMovie.Summary = div.SelectSingleNode(".//div[@class='outline']").InnerText.Trim();
newMovie.Summary = a.SelectSingleNode("div[starts-with(@class, 'service')]").InnerText.Trim();
movies.Add(newMovie);
}lstMovies.ItemsSource = movies;
这会在列表中显示,但我无法在该结果中选择单个项目,
它让我把它全部选为列表而不是每一个。
此外,目的是能够选择该值然后将该值用作文本字段。所以用户点击12然后我在应用程序中使用12。
需要改变什么?感谢
答案 0 :(得分:1)
您可以尝试这种方式:
var links = htmlDocument.DocumentNode
.SelectNodes("//div[starts-with(@class, 'content')]//a[@class='service']")
foreach (var a in links)
{
Movie newMovie = new Movie();
newMovie.Summary = a.InnerText.Trim();
movies.Add(newMovie);
}
lstMovies.ItemsSource = movies;
基本上,XPath作为SelectNodes()
的参数传递给选择具有类等于<a>
的单个"service"
节点(您可以使用starts-with()
或{{1更改类检查如有必要)。