你来了
concat(string-join(//div[count(p) = 1]/p, ',') , ',' , string-join(//div[count(p) > 1]/string-join(p, ''), ','))
将返回 1,2,46
因为您需要在同一个 div 标签下连接一些 p 标签,所以在所有情况下,这将产生可以通过 tokenise() 函数转换为数组的字符串。
这是诀窍:
第一部分
string-join(//div[count(p) = 1]/p, ',')
这只会选择只有一个 p 标签的 div .. 所以这里不需要连接。这会得到
1,2
第二部分
string-join(//div[count(p) > 1]/string-join(p, ''), ',')
这部分concat同一个div下的所有p标签,然后加入所有拥有多个p chid标签的dev。
这部分会得到
46
示例:
<div>
<p>1</p>
</div>
<div>
<p>2</p> 3
</div>
<div>
<p>4</p> 5 <p>6</p>
</div>
<div>1<p>2</p>3 , 1<p>2</p><p>3</p>4</div>
输出将是
1,2,46,223
如果你想要它作为数组,你可以标记它。
tokenize(concat(string-join(//div[count(p) = 1]/p, ',') , ',' , string-join(//div[count(p) > 1]/string-join(p, ''), ',')) , ',')
我希望这会有所帮助。
如果我错了,请纠正我。