我有一個問題dt,dd從打擊 HTML 表中選擇所有<dl class="Grid Grid--multicol Grid--2col:40em Grid--4col:60em"> <div class="Grid-cell u-flex u-flexOne u-flexRow"> <dt> Item ID:</dt> <dd class="u-weightSemibold u-paddingL5px">72547664</dd> </div> <div class="Grid-cell u-flex u-flexOne u-flexRow"> <dt> License:</dt> <dd class="u-weightSemibold u-paddingL5px"> <a class="u-linkDodgerBlue js-infoLicenseString" href="" target="_blank">Standard</a> </dd> </div> <div class="Grid-cell u-flex u-flexOne u-flexRow"> <dt> Usage:</dt> <dd class="u-weightSemibold">Commercial<span class="TooltipQuestionMark"></span></dd> </div> <div class="Grid-cell u-flex u-flexOne u-flexRow"> <dt> Required Plugins:</dt> <dd class="u-weightSemibold u-paddingL5px">None</dd> </div> <div class="Grid-cell u-flex u-flexOne u-flexRow"> <dt> Creation Tool:</dt> <dd class="u-weightSemibold u-paddingL5px">Autodesk</dd> </div> <div class="Grid-cell u-flex u-flexOne u-isHidden:0-60em"></div></dl>我寫這個 i = 0; doc.DocumentNode.SelectNodes("//dl").Where(x => x.HasClass("Grid")).FirstOrDefault().SelectNodes(".//div").ToList().ForEach(x => { result.Items.Add(new DownloadItem { Name = "specs-title", Index = i, Type = DownloadItemType.Text, Value = x.SelectNodes(".//dt").FirstOrDefault().GetText() }); result.Items.Add(new DownloadItem { Name = "specs", Index = i++, Type = DownloadItemType.Text, Value = x.SelectNodes(".//dd").GetText() }); });上面的代碼只是抓取第一行 Item ID:| 72547664 什么我的問題,列出所有dt與dd信息
1 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
你的代碼的問題是,當你第一次想dl用 class獲取所有元素時Grid,你只用方法獲取那種類型的 DOM 元素中的第一個FirstOrDefault()。
i = 0; doc.DocumentNode.SelectNodes("//dl").Where(x => x.HasClass("Grid")).SelectNodes(".//div").ToList().ForEach(x =>
{
result.Items.Add(new DownloadItem { Name = "specs-title", Index = i, Type = DownloadItemType.Text, Value = x.SelectNodes(".//dt").FirstOrDefault().GetText() });
result.Items.Add(new DownloadItem { Name = "specs", Index = i++, Type = DownloadItemType.Text, Value = x.SelectNodes(".//dd").GetText() });
});
您必須刪除FirstOrDefault()以獲取適合您需求的所有元素。
- 1 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消