Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html CsQuery-获取两个选择器之间的同级值?_Html_Linq_Csquery - Fatal编程技术网

Html CsQuery-获取两个选择器之间的同级值?

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

我正试图从一个大的HTML页面中解析出值,我正在努力从两个选择器之间提取文本。下面是我的HTML示例:

<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. 
        });
    });