Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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
C# 分组结果为XPath_C#_Xml_Xpath_Html Agility Pack - Fatal编程技术网

C# 分组结果为XPath

C# 分组结果为XPath,c#,xml,xpath,html-agility-pack,C#,Xml,Xpath,Html Agility Pack,简介: 假设我们有这样一个HTML代码: <div class="search-result"> <h2>TV-Series</h2> <ul> <li> <div class="title"> <a href="/subtitles/prison-break-sequel-first-season">Pris

简介:

假设我们有这样一个HTML代码:

<div class="search-result">            
    <h2>TV-Series</h2>
        <ul>

             <li>
     <div class="title">
         <a href="/subtitles/prison-break-sequel-first-season">Prison Break : Sequel - First Season</a>             
     </div>        
     <span class="subtle count">10 subtitles</span>
             </li>

             <li>            
     <div class="title">
         <a href="/subtitles/prison-break-fourth-season">Prison Break - Fourth Season</a>            
     </div>        
     <span class="subtle count">1232 subtitles</span>
             </li>

         </ul>

    <h2>Popular</h2>
        <ul>

             <li>
     <div class="title">
         <a href="/subtitles/prison-break-fourth-season">Prison Break - Fourth Season (2008)</a>
     </div>
     <div class="subtle count">
        1232 subtitles
     </div>

             </li>

             <li>
     <div class="title">
         <a href="/subtitles/prison-break-third-season">Prison Break - Third Season (2007)</a>
     </div>
     <div class="subtle count">
        644 subtitles
    </div>
             </li>

        </ul>   

</div>

电视剧
  • 10个副标题
  • 1232副标题
流行的
  • 1232副标题
  • 644副标题
页面是这样的:

<div class="search-result">            
    <h2>TV-Series</h2>
        <ul>

             <li>
     <div class="title">
         <a href="/subtitles/prison-break-sequel-first-season">Prison Break : Sequel - First Season</a>             
     </div>        
     <span class="subtle count">10 subtitles</span>
             </li>

             <li>            
     <div class="title">
         <a href="/subtitles/prison-break-fourth-season">Prison Break - Fourth Season</a>            
     </div>        
     <span class="subtle count">1232 subtitles</span>
             </li>

         </ul>

    <h2>Popular</h2>
        <ul>

             <li>
     <div class="title">
         <a href="/subtitles/prison-break-fourth-season">Prison Break - Fourth Season (2008)</a>
     </div>
     <div class="subtle count">
        1232 subtitles
     </div>

             </li>

             <li>
     <div class="title">
         <a href="/subtitles/prison-break-third-season">Prison Break - Third Season (2007)</a>
     </div>
     <div class="subtle count">
        644 subtitles
    </div>
             </li>

        </ul>   

</div>

您可以在此处看到原始站点:

我正在编写一个C#桌面应用程序,用于获取该站点的信息

在学习HTML敏捷包之前,我使用正则表达式

使用此模式:
[\s\s]+?
我将独立的系列(如电视系列、流行和…)

然后在Rgular表达式上使用此模式:
  • [\s\s]+?[\s\s]+?class=“微妙计数”[\s\s]+?(\d*)[\s\s]+?
  • 我从该站点获得分类信息

    使用MatchCollection&usinggroups(用括号定义),我在Regex中的方法返回了每个系列的二维列表,每一行都是关于一部电影的,列包括:电影名称、字幕数量和字幕链接

    这个二维列表就像一个数据库,就像这样:

    现在我学习了HTML敏捷包

    问题:

    1-如何使用XPath在HTML敏捷包中创建这样的列表

    2-如您之前所见,我可以使用哪个XPath创建类似Regex的组


    非常感谢。

    Martin Honnen的评论是正确的,没有太多功能通过XPath提供“分组”。但是,可以使用循环并在元素集上运行一组XPath来提取所需的数据

    首先,提取每个标题元素,然后从标题中提取每个列表项,并运行一个文件XPath从每个文件中提取所需的值

    注意:这段代码是针对XDocument使用XPath编写的,而不是使用HTML Agility Pack编写的,但是XPath应该是相同的


    请注意,在最后一个表达式中使用了XPath
    |
    运算符,以在单个XPath调用中选择多个不同子级的值。这些值有点像您想要的那样“分组”

    使用XSLT、XQuery或LINQ(可以与HTMLAgilityPack一起使用)更好地完成分组。显示一些代码如何?您必须解释所需输出的数据结构,而不是显示图像?有关使用LINQ对示例进行分组的信息,请参阅。我只想对XPath进行分组,如Regex。。。