鉴于我有这个(未知的)文档结构,如何编写xpath来选择div1和div2,即所有div,但不是递归(没有div,包含在另一个div中的任何地方)?
我找不到任何可以指向这个方向的文档,我可以管理的是选择所有div,即div1,div2和div3(带//div
表达式),但我想排除div2在这里,因为它是另一个人的后裔。
(我需要一个通用的解决方案来选择不递归的标签,这里的ID仅用于说明目的。)
...some unknown structure with no divs...
<div id="1">
...some unknown structure with no divs...
<div id="2"></div>
...some unknown structure with no divs...
</div>
...some unknown structure with no divs...
<div id="3"></div>
...some unknown structure with no divs...
答案 0 :(得分:2)
如果您选择 str +=pars[i].name+strn(p[i],format='('+pars[i].sformat+')')
^
% Syntax error.
At: /home/behzad/schwmodfirstiter_box.pro, Line 5
% 1 Compilation error(s) in module SCHMAKEPARSTRING.
str +=pars[i].name+strn(p[i],format='('+pars[i].sformat+')')
^
% Syntax error.
At: /home/behzad/schwmodfirstiter_box.pro, Line 14
% 1 Compilation error(s) in module SCHMAKEPARSTRING0.
mlstr=pars[0].name+strn(ml[k],format='('+pars[0].sformat+')')+'/'
^
% Syntax error.
At: /home/behzad/schwmodfirstiter_box.pro, Line 63
% 1 Compilation error(s) in module SCHMAKEMODEL.
% Compiled module: SUBMITORBLIB.
% Compiled module: COMPILENNLS.
% Compiled module: SCHWMODFIRSTITER.
,则选择所有//div[not(ancestor::div)]
个没有祖先的元素也是div
。
如果您有权访问XPath 3.1或3.0,您还可以使用div
函数https://www.w3.org/TR/xpath-functions/#func-outermost,因为它“返回序列中没有序列中的另一个节点作为祖先的每个节点”所以“表达式outermost
返回那些未包含在其他div元素中的div元素”。