Html CsQuery-获取两个选择器之间的同级值?
我正试图从一个大的HTML页面中解析出值,我正在努力从两个选择器之间提取文本。下面是我的HTML示例:Html CsQuery-获取两个选择器之间的同级值?,html,linq,csquery,Html,Linq,Csquery,我正试图从一个大的HTML页面中解析出值,我正在努力从两个选择器之间提取文本。下面是我的HTML示例: <table class="categories"> <tr class="category"> <td class="categoryTitle">Category #1</td> <td class="categoryDate">12-1-2012</td> <td class="cate
<table class="categories">
<tr class="category">
<td class="categoryTitle">Category #1</td>
<td class="categoryDate">12-1-2012</td>
<td class="categoryFoos">212</td>
</tr>
<tr class="catItem">
<td class="catItemName"><div class="itemName">Category Item #1</div></td>
<td class="catItemColor">Blue</td>
<td class="catItemSprockets">17</td>
</tr>
<tr class="catItem">
<td class="catItemName"><div class="itemName">Category Item #2</div></td>
<td class="catItemColor">Red</td>
<td class="catItemSprockets">454</td>
</tr>
<tr class="catItem">
<td class="catItemName"><div class="itemName">Category Item #3</div></td>
<td class="catItemColor">Purple</td>
<td class="catItemSprockets">11</td>
</tr>
<tr class="category">
<td class="categoryTitle">Category #2</td>
<td class="categoryDate">12-17-2012</td>
<td class="categoryFoos">311</td>
</tr>
<tr class="catItem">
<td class="catItemName"><div class="itemName">Category Item #1</div></td>
<td class="catItemColor">Yellow</td>
<td class="catItemSprockets">73</td>
</tr>
<tr class="catItem">
<td class="catItemName"><div class="itemName">Category Item #2</div></td>
<td class="catItemColor">Red</td>
<td class="catItemSprockets">5</td>
</tr>
<tr class="catItem">
<td class="catItemName"><div class="itemName">Category Item #3</div></td>
<td class="catItemColor">Purple</td>
<td class="catItemSprockets">11</td>
</tr>
</table>
您将在所有行中循环。用这个
CQ-dom=“…您的html…”;//或CQ.CreateFromUrl(“http://www.jquery.com");
CQ rows=dom[“tr”].ToList();
如果您有一个新类别,请启动一个新类别并添加项目
var categoryList = new List<Category>();
var currentCategory = null;
foreach(var r in rows) {
// extract class name from html, with regex
var className = ...;
if(currentCategory != null && className == "catItem")
{
var item = new CategoryItem();
item.Name = r[".itemName"].First().Text();
item.Color = r[".catItemColor"].First().Text();
...
currentCategory.Items.Add(item);
}
else if(className == "category")
{
var item = new CategoryItem();
item.Date = r[".categoryDate"].First().Text();
item.Foos= r[".categoryFoos"].First().Text();
...
categoryList.Add(item);
}
}
var categoryList=new List();
var currentCategory=null;
foreach(行中的var r){
//使用正则表达式从html中提取类名
var className=。。。;
如果(currentCategory!=null&&className==“catItem”)
{
var item=new CategoryItem();
item.Name=r[“.itemName”].First().Text();
item.Color=r[“.catItemColor”].First().Text();
...
currentCategory.Items.Add(项目);
}
else if(className==“category”)
{
var item=new CategoryItem();
item.Date=r[“.categoryDate”].First().Text();
item.Foos=r[“.categoryFoos”].First().Text();
...
类别列表。添加(项目);
}
}
免责声明:此代码不适用于生产;-) 如果我明白你想说的话
CQ html = "your html here";
html[".Category"].Each((index,dom)=>{
var category = dom.Cq(); //everything what will go bellow
//you will need to use .Find() function NOT '[]' or SELECT because it will
// get values from whole html not just from your category
string categoryTitle = category.Find(".categoryTitle").Text();
string categoryDate = cateogry.Find(".categoryDate").Text();
//and etc...
//now loop throw catItems
category[".catItems"].Each((catIndex,catDom)=>{
var catItem = catDom.Cq();
//the same principe goes here.
});
});
var categoryList = new List<Category>();
var currentCategory = null;
foreach(var r in rows) {
// extract class name from html, with regex
var className = ...;
if(currentCategory != null && className == "catItem")
{
var item = new CategoryItem();
item.Name = r[".itemName"].First().Text();
item.Color = r[".catItemColor"].First().Text();
...
currentCategory.Items.Add(item);
}
else if(className == "category")
{
var item = new CategoryItem();
item.Date = r[".categoryDate"].First().Text();
item.Foos= r[".categoryFoos"].First().Text();
...
categoryList.Add(item);
}
}
CQ html = "your html here";
html[".Category"].Each((index,dom)=>{
var category = dom.Cq(); //everything what will go bellow
//you will need to use .Find() function NOT '[]' or SELECT because it will
// get values from whole html not just from your category
string categoryTitle = category.Find(".categoryTitle").Text();
string categoryDate = cateogry.Find(".categoryDate").Text();
//and etc...
//now loop throw catItems
category[".catItems"].Each((catIndex,catDom)=>{
var catItem = catDom.Cq();
//the same principe goes here.
});
});