我有一个具有以下结构的网页,我正在通过XPath Helper Google Chrome extenson从中提取数据
<div class="example">
<span class="name">John Doe</span>
<span class="foo">1</div>
</div>
<div class="example">
<span class="name">Jane Doe</span>
</div>
<div class="example">
<span class="name">Richard Roe</span>
</div>
<div class="example">
<span class="name">Jane Roe</span>
<span class="foo">2</div>
</div>
我想使用XPath选择每个示例变量的name
和foo
。如果变量没有foo
值,则应显示0
,blank
或NULL
,以便我可以将每个name
与foo
匹配1}}
此查询//div[@class="example"]/span[@class="name"]
可以返回所有名称
John Doe
Jane Doe
Richard Roe
Jane Roe
但是,对于此查询//div[@class="example"]/span[@class="foo"]
,我只会在foo
存在时获得结果
1
2
单独使用这两个查询,我无法跟踪foo
div下每个name
属于example
的{{1}}。
理想情况下,我需要一个返回
的查询John Doe, 1
Jane Doe, 0
Richard Roe, 0
Jane Roe, 2
但是,如果我只能获得第二部分的查询
1
0
0
2
它也有效,因为我可以将结果与各自的名称相匹配。
如何使用XPath 1.0构建查询来完成此任务?
答案 0 :(得分:0)
使用XPath 2.0,你可以使用for循环:
for $ex in //div[@class='example']
return concat( $ex/span[@class='name'], ',', sum($ex/span[@class='foo'], '0'))
它返回:
John Doe,1
Jane Doe,0
Richard Roe,0
Jane Roe,2