Php 运行xpath查询时排除dom树中的标记
我有一个这样的html结构Php 运行xpath查询时排除dom树中的标记,php,dom,xpath,attributes,domdocument,Php,Dom,Xpath,Attributes,Domdocument,我有一个这样的html结构 <div id="divid"> <ul id="ulid"> <li style="margin-left: 8px"> <strong>books</strong> </li> <li style="margin-left: 6px"> <a hre=""> <span id="spanid">first l
<div id="divid">
<ul id="ulid">
<li style="margin-left: 8px">
<strong>books</strong>
</li>
<li style="margin-left: 6px">
<a hre="">
<span id="spanid">first line</span></a>
</li>
<li style="margin-left: 6px">
<a hre="">
<span id="spanid">2nd line</span></a>
</li>
</ul>
</div>
我想要的结果是
第一行第二行 据我所知,如果第一个“li”标记中没有“strong”标记,那么xpath查询就可以了
现在我想从xpath查询中排除'li'标记(其中包含'strong'标记),这样我就可以在li标记中获得锚定标记下方的标记值
如何修改xpath查询使之成为可能?有什么指导方针吗 我工作的原始代码是
<ul data-typeid="n" id="ref_1000">
<li style="margin-left: -18px;">
<a href="/s/ref=sr_ex_n_0?rh=i%3Aaps%2Ck%3Ahow+to+grow+tomatoes&sort=salesrank&keywords=how+to+grow+tomatoes&ie=UTF8&qid=1327692925">‹ <span class="expand">Any Department</span></a>
</li>
<li style="margin-left: 8px;">
<strong>Books</strong>
</li>
<li style="margin-left: 6px;">
<a href="/s/ref=sr_nr_n_0?rh=k%3Ahow+to+grow+tomatoes%2Cn%3A283155%2Cp_n_feature_browse-bin%3A618073011%2Cn%3A%211000%2Cn%3A48&bbn=1000&sort=salesrank&keywords=how+to+grow+tomatoes&ie=UTF8&qid=1327692925&rnid=1000">
<span class="refinementLink">Crafts, Hobbies & Home</span><span class="narrowValue"> (19)</span>
</a>
</li>
<li style="margin-left: 6px;">
<a href="/s/ref=sr_nr_n_1?rh=k%3Ahow+to+grow+tomatoes%2Cn%3A283155%2Cp_n_feature_browse-bin%3A618073011%2Cn%3A%211000%2Cn%3A10&bbn=1000&sort=salesrank&keywords=how+to+grow+tomatoes&ie=UTF8&qid=1327692925&rnid=1000">
<span class="refinementLink">Health, Fitness & Dieting</span><span class="narrowValue"> (3)</span>
</a>
</li>
<li style="margin-left: 6px;">
<a href="/s/ref=sr_nr_n_2?rh=k%3Ahow+to+grow+tomatoes%2Cn%3A283155%2Cp_n_feature_browse-bin%3A618073011%2Cn%3A%211000%2Cn%3A6&bbn=1000&sort=salesrank&keywords=how+to+grow+tomatoes&ie=UTF8&qid=1327692925&rnid=1000">
<span class="refinementLink">Cookbooks, Food & Wine</span><span class="narrowValue"> (2)</span>
</a>
</li>
</ul>
-
- 书籍
-
-
-
我想提取
工艺、爱好和家庭等在span标签中关闭
从表面上看提供的表达式——即忽略表达式与您对它的描述之间的任何矛盾——您可以使用以下表达式排除包含
strong
子元素的li
元素:
//div[@id="divid"]/ul[@id="ulid"]/li[not(strong)]/a
从表面上看提供的表达式——即忽略表达式与您对它的描述之间的任何矛盾——您可以使用以下表达式排除包含
strong
子元素的li
元素:
//div[@id="divid"]/ul[@id="ulid"]/li[not(strong)]/a
xpath查询不应该是
//div[@id=“divid”]/ul[@id=“ulid”]/li/span
?谢谢cambraca,这是一个笔误,我已经为您的观点修复了代码。看来您应该只针对span://span[@class=“refinementLink”]xpath查询不应该是//div[@id=“divid”]/ul[@id=“ulid”]/li/span
?谢谢cambraca,这是一个文书错误,我现在已经为您的观点修复了代码..似乎您应该只针对span://span[@class=“refinementLink”]谢谢,理论上,它应该可以工作,我已经尝试过,现在再次尝试过,但它工作不好,根据您提供的源代码输入,它可以工作。我总是在发帖前测试我的答案。最有可能的情况是,您的实际文档与您向我们展示的文档在某些方面有所不同。或者是XPath之外的东西出了问题,但是你没有向我们展示任何代码。谢谢lwburk,我仔细地转换了代码,不管怎样,我现在已经粘贴了原始代码。谢谢,理论上,它应该可以工作,我已经试过了,现在又试过了,但效果不好,根据您提供的源输入,它正在工作。我总是在发帖前测试我的答案。最有可能的情况是,您的实际文档与您向我们展示的文档在某些方面有所不同。或者是XPath之外的东西出了问题,但是您没有向我们展示任何代码。感谢lwburk,我仔细地转换了代码,无论如何,我现在已经粘贴了原始代码。。