可以将xpath与嵌套循环一起使用吗?

时间:2019-05-30 00:18:52

标签: c# loops xpath nested html-agility-pack

所以我试图用xpath解析一些html。这是我的页面的样子

<area id="a_0_0" alt="asd">
<area id="a_0_1" alt="asd">
<area id="a_1_0" alt="asd">
<area id="a_1_1" alt="asd">

那么可以用xpath解析它吗?还是我需要使用其他东西?我对xpath有点陌生,这是我尝试过的

doc.DocumentNode.SelectSingleNode("//area[@id='a_0_0']").Attributes["alt"].Value;//this is works 

doc.DocumentNode.SelectSingleNode("//area[@id='a_0_[position() >=0 and position() <=1]']").Attributes["alt"].Value
doc.DocumentNode.SelectSingleNode("//area[@id='a_[position() >=0 and position() <=1]']_[position() >=0 and position() <=1]']").Attributes["alt"].Value

2 个答案:

答案 0 :(得分:0)

您可以将xml解析为XDocument,并从linq中受益。

XDocument.Parse(xmlstring)

答案 1 :(得分:0)

这是简单的解决方案。

var nodes = doc.DocumentNode.SelectNodes("//area[contains('a_0_0,a_0_1,a_1_0,a_1_1',id)]")
foreach (var node in nodes)
{
    // node.Attributes["alt"].Value
} 

此外,您还可以在下面使用它来获取所有具有alt属性的区域节点。

var nodes = doc.DocumentNode.SelectNodes("//area[@alt]");

要获取以a_开头的所有区域节点,请使用以下内容。

var nodes = doc.DocumentNode.SelectNodes("//area[starts-with(@id,'a_')][@alt]);