C# CSQuery选择元素
我有一个html文件,如下所示:C# CSQuery选择元素,c#,html,asp.net,.net,csquery,C#,Html,Asp.net,.net,Csquery,我有一个html文件,如下所示: <h3> <div id='type'> Type 1 </div> <div id='price'> 127.76; </div> </h3> <h3> <div id='type'> Type 2 </div> <div id='pri
<h3>
<div id='type'>
Type 1
</div>
<div id='price'>
127.76;
</div>
</h3>
<h3>
<div id='type'>
Type 2
</div>
<div id='price'>
127.76;
</div>
</h3>
现在我想使用CSQuery将这些类型和价格提取到列表中,下面是我正在处理的代码:
var doc=CQ.Createhtmlfile
var types= (from listR in doc["<h3>"] //get the h3 tag
select new TypeTest
{
Typename = listR.GetAttribute("#type"),
Price = listR.GetAttribute("#price")
}
).ToList();
return types;
但是,我无法获得我希望的详细信息,因为当我将doc[]值设置为h3时,我不确定它的值。无法修改html文件。您正在分析的html格式无效,即多个相同id。有两个id='type'和id='price,您必须执行以下步骤 加载dom 分别加载类型和价格div的集合。 使用Zip函数将它们重新连接在一起,并投影到您的TypeTest对象中。 下面是一个工作示例:
// 1
var doc = CQ.Create(html);
// 2
var typeDivs = doc["h3 > div#type"];
var priceDivs = doc["h3 > div#price"];
// 3
var types = typeDivs.Zip(priceDivs, (k, v) => new { k, v })
.Select(h =>
new TypeTest { Typename = h.k.InnerText.Trim(),
Price = h.v.InnerText.Trim() });
谢谢你,你再次帮助了我,我尝试了两种情况,但仍然不起作用,我对这种类型的解析还是很陌生@hutchonoid@bluewonder没问题,给你。完整的工作示例:@你好,我不知道。也许值得再问一个问题,我相信有人会回答的。