<div>
<p>a</p>
<ul>
<li></li>
</ul>
<other-tags></other-tags>
<div>
在上面的示例中,我想选择p
和li
标签。
我可以使用//div/p|//div/ul/li
来做到这一点,但是不用|
也可以实现同样的目的,换句话说,不用重复//div
。我尝试了//div/*[self::p or self::ul/li]
,但是它选择了p
和ul
标签。
答案 0 :(得分:1)
此XPath,
//*[self::p or self::li]
将选择文档中的所有p
和li
元素。
此XPath,
//div[@id="i1"]//*[self::p or self::li]
将选择目标p
元素下的所有li
和div
元素。
答案 1 :(得分:0)
您所要做的就是使用/**
* From: https://gist.github.com/kethinov/6658166
*/
exports.default = function walkSync(dir, filelist) {
var fs = fs || require('fs'),
files = fs.readdirSync(dir);
filelist = filelist || [];
files.forEach(function (file) {
var path = dir + file;
if (fs.statSync(dir + file).isDirectory()) {
filelist = walkSync(dir + file + '/', filelist);
}
else {
filelist.push(path);
}
});
return filelist;
};
。另外,它有助于研究 //p|//li
的内容,因为我发现此信息here。为什么要避免在XPath中使用before
?