HTMLAgilityPack重复输出

时间:2017-06-27 10:27:29

标签: c# html-agility-pack

我正在使用HTMLAgilityPack来解析表格中的单元格。根据我的理解,这段代码应该只输出" test"一旦。但出于某种原因,它输出" test"两次,每10秒两次。

输出图片:https://i.gyazo.com/714a880a626c262b03df2b49dcb7711a.png

我做错了什么,或者这是HTMLAgilityPack的问题?我已经在StackOverflow和其他教程网站上尝试了多种解决方案来实现这一点,但我尝试的每个解决方案都是这样做的。我需要能够读取每个单元格,这只是我测试我是否可以得到一个没有重复的输出,但我想我不能。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml("<tr><td>test</td><td>test 2</td></tr>");

var rows = doc.DocumentNode.SelectNodes("//tr");

if (rows != null && rows.Count > 0)
{
      foreach (var row in rows)
      {
            var cells = row.SelectNodes(".//td");
            Console.WriteLine(cells[0].InnerText);
            return;
       }
}

1 个答案:

答案 0 :(得分:0)

我没有收到你所描述的错误。因此,问题必须出在您用于调用问题中所发布内容的任何代码中。我不知道调用代码是什么,但下面是一些读取表中所有单元格的代码。

首先,表格:

    email := w3id
username := "286000_" + w3id
address1 := "1101 Kitchawan Road"
city := "Yorktown Heights"
companyName := "WIS - RIS Account"
state := "NY"
country := "US"
postalCode := "10598"
timezoneID := 117
userStatusID := 1001
sslVpnAllowedFlag := true
templateObject := datatypes.User_Customer{
    Email:             &email,
    Username:          &username,
    Address1:          &address1,
    City:              &city,
    CompanyName:       &companyName,
    State:             &state,
    Country:           &country,
    PostalCode:        &postalCode,
    FirstName:         &firstname,
    LastName:          &lastname,
    TimezoneId:        &timezoneID,
    UserStatusId:      &userStatusID,
    SslVpnAllowedFlag: &sslVpnAllowedFlag,
}

fmt.Printf("Registering w3id %s, %s %s, with SL\n", w3id, firstname, lastname)

//password := pg.NewPassword(12)
password := "Temp4now!"
userService := services.GetUserCustomerService(sess)
u, err := userService.CreateObject(&templateObject, &password, &password)
if err != nil {
    fmt.Println(err)
    return
}
fmt.Printf("User registered: %s, password: %s\n", *u.Username, password)

我在你的例子中添加了一行。

现在,我假设您希望将值放入某种类型的强类型IEnumerable中。所以这是IEnumerable将基于的类:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"
    <table>
        <tr>
            <td>test</td>
            <td>test 2</td>
        </tr>
        <tr>
            <td>test 3</td>
            <td>test 4</td>
        </tr>
    </table>
");

现在是将Html数据读入强类型对象的代码:

public class StronglyTypedRow {
    public string columnOne {get;set;}
    public string columnTwo {get;set;}
}

如果您希望在控制台中阅读它:

var importedTable = new List<StronglyTypedRow>();

var rows = doc.DocumentNode.SelectNodes("//tr");

if (rows != null && rows.Count > 0) {

    foreach (var row in rows) {

        var cells = row.SelectNodes(".//td");

        var importedRow = 
            new StronglyTypedRow {
                columnOne = cells[0].InnerText,
                columnTwo = cells[1].InnerText
            };

        importedTable.Add(importedRow);

    }
}

希望它有所帮助。