为什么//div["someClass"]/p[1]也使用XPath返回未包装在所请求的div元素中的p标签?只有//*/div["someClass"]/p[1]返回示例HTML的预期结果:

<p>Foo</p>

<div class="someClass">
    <p>Bar</p>
</div>
  • //div["someClass"]/p[1]还返回第一个Foo p标记.
  • 如果为//*/div["someClass"]/p[1],则仅返回预期的条形图.

如果重要的话:我使用的是PHPDOMXPath.

推荐答案

  1. XPath仅定义了well-formed XML个以上,并且您发布的示例格式不好,因为它有多个根.也许您实际的XML/HTML只有一个根和其他未发布的标记;然后还有另一个需要考虑的问题……

  2. 请参见How to select the first element via XPath?,以避免在try Select XPath中的第一个元素时出现常见问题:

    //x[1]表示 Select 作为其父元素的第一个子级的x个元素,而不是文档中的第一个x个元素;(//x)[1]将 Select 文档中的第一个x个元素.

Html相关问答推荐

Angular 分量被循环

CURL邮箱中的图像不能调整其大小

使用css第n个子元素,如何迭代Y组中的X个元素?

创建一个带有div和径向渐变的全宽半圆

如何使用HTML和css代码在vb.net上打印POS

如何在排序上重用参数?

如何将CSS滤镜仅应用于背景图像

如何创建嵌套的动态表单元素

在TWebLabel标题中设置换行符/换行符的方法?

为什么要添加换行符(至少在 Google Chrome 中)

我的 *ngFor 中的 array.reverse() 在生产中不起作用

如何使用 Flutter 构建 Chrome 扩展?

嵌入最近的 YOUTUBE 视频(不是短片,视频)

如何从 div 内的属性中提取 href 和文本

如何将内容放置在侧边栏旁边?

并排对齐两个文本区域列

Mediawiki css/html 信息框创建空白行

为什么相同持续时间的转换需要不同的时间?

如何将第一个 p 标签放在其下方第二个 p 标签的中间

是否有一种静态方式可以根据暗模式 Select 一张或另一张图像?