2013-10-27 84 views
0

使用XPath我曾问一个问题关于Traversing back to parent node in xpath穿越回在asp.net

我得到预期的回应之前的节点,但是我有进一步发展一个更加怀疑。下面HTML:

<ul><li class="section">BROADCASTING</li> 
<ul> 
<li class="subsection"></li> 
<li class="circle"><a href="/article/95242-STATION_BREAK.php">STATION BREAK</a></li> 
<li class="circle"><a href="/article/98142-Labor_pains_hunger_pangs.php">Labor pains, hunger pangs</a></li> 
<li class="circle"><a href="/article/101509-Wake_up_call_for_Dream_Team.php">Wake-up call for Dream Team</a></li> 
<li class="circle"><a href="/article/136139-News_crew_turns_rescuer.php">News crew turns rescuer</a></li> 
<li class="circle"><a href="/article/136140-Chopper_safety_had_been_challenged.php">Chopper safety had been challenged</a></li> 
<li class="circle"><a href="/article/136142-Nielsen_adds_Dayton_.php">Nielsen adds Dayton..</a></li> 
<li class="circle"><a href="/article/136143-Mondale_watch.php">Mondale watch</a></li> 
<li class="circle"><a href="/article/136144-Those_70s_clearances.php">Those 70s clearances</a></li> 
<li class="circle"><a href="/article/136145-Oscar_goes_to_ABC.php">Oscar goes to ABC</a></li> 
<li class="circle"><a href="/article/136146-Hearst_Argyle_gives_a_green_light.php">Hearst-Argyle gives a green light</a></li> 
<li class="circle"><a href="/article/136147-Finding_Geena_Davis.php">Finding Geena Davis</a></li> 
<li class="circle"><a href="/article/136148-Syndication_Wrap_up.php">Syndication Wrap-up</a></li> 
<li class="circle"><a href="/article/136149-CBS_TV_news_pioneer_dies_at_86.php">CBS TV news pioneer dies at 86</a></li> 
<li class="circle"><a href="/article/136150-New_York_anchor_remembered.php">New York anchor remembered</a></li> 
<li class="circle"><a href="/article/136151-News_sharing_in_West_Virginia.php">News sharing in West Virginia</a></li> 
<li class="circle"><a href="/article/136152-News_dropping_in_Orlando.php">News dropping in Orlando</a></li> 
<li class="subsection">Null</li> 
<li class="circle"><a href="/article/136141-GET_WITH_THE_PROGRAM.php">GET WITH THE PROGRAM</a></li> 
<li class="subsection">PEOPLE'S CHOICE</li> 
<li class="circle"><a href="/article/97423-Syndication_as_branding.php">Syndication as branding</a></li> 
</ul> 
</ul> 

@Alex的帮助,现在我可以得到所有的章节和小节。然后我想要这个小节里面的文章,我试了一下自己并收到了预期的输出,不过我现在的问题是在<li class="subsection">标签后面我们有个人<li class="circle">标签,里面包含anchor标签里的文章信息,现在由于class="circle"标签本身单个节点(不在class="subsection"节点内),我不能在特定的小节中获取文章,它将获取第一小节中的所有文章,然后在第二小节中它也从第三小节获取文章,只有在最后一个小节中才能正常工作,因为它没有更多的小节。

有谁能告诉我如何限制特定小节内的文章,我的意思是当它得到class="subsection"标签时,应该停止为该小节进一步提取文章,并开始获取另一个小节。

回答

1

您可以使用类似:

//ul/ul[preceding::li[@class='section' and .=\"BROADCASTING\"]]/li[@class='subsection' and .=\"\"]/following::li[@class='circle' and following::li[@class='subsection' and .=\"Null\"]]/a

让所有<li class='subsection'></li><li class='subsection'>Null</li>之间的锚。要获得<li class='subsection'>Null</li><li class='subsection'>PEOPLE'S CHOICE</li>之间的链接,您需要在此处替换必要的值:li[@class='subsection' and .=\"{...}\"

要获得最后一个小节下的锚点,下一个表达式就足够了: //ul/ul[preceding::li[@class='section' and .=\"BROADCASTING\"]]/li[@class='subsection' and .=\"PEOPLE'S CHOICE\"]/following::li[@class='circle']/a"

我希望你已经发现了这个想法。

+0

HI @Alex是我做过的同样的事情,但问题是当我指定 /li [@ class ='subsection'和。='people'选项'],但它不起作用,从第二部分它仍然需要一篇文章并将其附加到第一个。 – Abbas

+0

@阿巴斯:请你说明你到底遇到了什么问题:第一,第二或第三小节? – Alex

+0

嗨@Alex,首先,感谢您回复并在每一步中给予您宝贵的帮助,实际上,如果我使用上述方法,我的第一个子部分(

  • )将所有文章在下面,但是当它找到另一个(
  • Null
  • )时它不会停止,而是它仍然进入第二个小节并获取第一个文章。 – Abbas