解析单选按钮名称仅显示一个值

时间:2014-02-22 23:25:34

标签: c# html-agility-pack

我编写了一些代码来解析某些单选按钮的名称。

<div id="First" class="Size-Inputs"> 
<input rel="8" type="radio" value="13051374" name="idProduct-13051359"/> <span rel="L">L</span>
<input rel="8" type="radio" value="13051373" name="idProduct-13051359"/> <span rel="M">M</span>
<input rel="8" type="radio" value="13051372" name="idProduct-13051359"/> <span rel="S">S</span>
<input rel="8" type="radio" value="13051375"name="idProduct-13051359"/> <span rel="XL">XL</span> </div>

当我尝试解析span rel以获取大小名称(例如L,M,S,XL)时,我遇到的问题是它只出现值L四次。

我正在使用的代码是;

HtmlNodeCollection link = doc.DocumentNode.SelectNodes("//*[@id='First']/input");
if (link != null)
{
    foreach (HtmlNode item in link)
    {
        string name = item.SelectSingleNode("//*[@id='First']/span").InnerText;
        Console.WriteLine(name);
    }
    Console.ReadLine();
}

我只是想知道为什么它只获取一个值并将其打印四次,如何让它为每个变量输入选择span rel。感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:1)

您似乎不需要<input>元素,而是<span>元素。 <span>不是<input>的孩子。因此,假设它不是拼写错误或粘贴错误,您可以直接选择<span>而不先选择<input>元素:

HtmlNodeCollection link = doc.DocumentNode.SelectNodes("//*[@id='First']/span");
if (link != null)
{
    foreach (HtmlNode item in link)
    {
        string name = item.InnerText;
        Console.WriteLine(name);
    }
    Console.ReadLine();
}