Что вы собираетесь делать с этой строкой?
.Where(tr => tr.GetAttributeValue("td", "").Contains("class"))
GetAttributeValue(name, def)
ищет атрибут с ключом name
в узле и возвращает значение этого атрибута, если оноосновывает это.В противном случае он возвращает значение по умолчанию def
.
Так что на самом деле здесь происходит то, что <tr>
не имеет никакого атрибута с ключом td
, поэтому он возвращает значение по умолчанию (пустая строка), который не содержит подстроку «class», поэтому ваш <tr>
узел фильтруется.
Edit : это вернет массив, где каждая запись является массивом из 8строки, содержащие содержимое каждого тд:
var node = doc.DocumentNode.Descendants("div")
.FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
.Element("table")
.Element("tbody")
.Elements("tr")
.Select(tr => tr.Elements("td").Select(td => td.InnerText).ToArray())
.ToArray();
Примеры:
node[0][1] == "US5316"
node[0][3] == "Rarotonga"