xml - XML 路径列表 - 仅生成某些节点
问题描述
我有来自这个网页的以下 XML 输入。
<ol class="breadcrumb seProductBreadcrumb">
<li>
<a href="/" data-value="Home" data-ui="product-breadcrumbs">
<span>Home</span>
</a>
</li>
<li>
<a href="/catalog/bicycling-catalog-39/" data-value="Bicycling Catalog" data-ui="product-breadcrumbs">
<span>Bicycling Catalog</span>
</a>
</li>
<li>
<a href="/product-list/bikes-1000/" data-value="Bikes" data-ui="product-breadcrumbs">
<span>Bikes</span>
</a>
</li>
<li>
<a href="/product-list/bikes-1000/mountain-1006/" data-value="Mountain" data-ui="product-breadcrumbs">
<span>Mountain</span>
</a>
</li>
<li>
<a href="/product-list/bikes-1000/mountain-1006/29-inch-wheel-29ers-1009/" data-value="29-Inch Wheel (29ers)" data-ui="product-breadcrumbs">
<span>29-Inch Wheel (29ers)</span>
</a>
</li>
<li>
<a href="/product-list/bikes-1000/mountain-1006/29-inch-wheel-29ers-1009/?rb_br=349" data-value="Specialized" data-ui="product-breadcrumbs">
<span>Specialized</span>
</a>
</li>
<li class="hidden-xs active">
<span class="hidden-xs">
Men's Stumpjumper ST Comp Carbon 29 – 12-Speed
</span>
</li>
</ol>
我的 XML 路径
//ol[@class="breadcrumb seProductBreadcrumb"]/li/a
为我生成以下输出:
<a href="/" data:value="Home" data:ui="product:breadcrumbs">
<span>Home</span>
</a>
<a href="/catalog/bicycling:catalog:39/" data:value="Bicycling Catalog" data:ui="product:breadcrumbs">
<span>Bicycling Catalog</span>
</a>
<a href="/product:list/bikes:1000/" data:value="Bikes" data:ui="product:breadcrumbs">
<span>Bikes</span>
</a>
<a href="/product:list/bikes:1000/mountain:1006/" data:value="Mountain" data:ui="product:breadcrumbs">
<span>Mountain</span>
</a>
<a href="/product:list/bikes:1000/mountain:1006/29:inch:wheel:29ers:1009/" data:value="29:Inch Wheel (29ers)" data:ui="product:breadcrumbs">
<span>29:Inch Wheel (29ers)</span>
</a>
<a href="/product:list/bikes:1000/mountain:1006/29:inch:wheel:29ers:1009/?rb_br=349" data:value="Specialized" data:ui="product:breadcrumbs">
<span>Specialized</span>
</a>
结果是 6 个元素。我怎么能说只有中间的 2 或 3 或 4 个元素?
解决方案
要获取问题中示例 xml 中的最后 4 个元素,此 xpath 表达式
//ol[@class="breadcrumb seProductBreadcrumb"]//li[position() >= (last()-4)]//a
输出
<a data-ui="product-breadcrumbs"
data-value="Bikes"
href="/product-list/bikes-1000/">
<span>Bikes</span>
</a>
<a data-ui="product-breadcrumbs"
data-value="Mountain"
href="/product-list/bikes-1000/mountain-1006/">
<span>Mountain</span>
</a>
<a data-ui="product-breadcrumbs"
data-value="29-Inch Wheel (29ers)"
href="/product-list/bikes-1000/mountain-1006/29-inch-wheel-29ers-1009/">
<span>29-Inch Wheel (29ers)</span>
</a>
<a data-ui="product-breadcrumbs"
data-value="Specialized"
href="/product-list/bikes-1000/mountain-1006/29-inch-wheel-29ers-1009/?rb_br=349">
<span>Specialized</span>
</a>
推荐阅读
- python - 这是比较一个整数的方法吗?我用它来检查它是否是一个字符串列表?
- bash - vscode 集成终端抛出 bash 错误 - echo: command not found
- google-app-engine - 需要帮助从旧版 SDK 迁移 (appcfg)
- java - 如何将大型 JTS 多边形拆分为多个 1 公里乘 1 公里的几何图形?
- c# - 通过 C# 将 Excel 导入 Hadoop
- python - 你如何在 Python 中组合多个字典的列表?
- python - 如何使用 Python 获取 MongoDB 中特定键的值
- python - 尝试复制 Python 结果时出现 Keras 错误
- angular - Angular Service Worker 未在数据组数组中缓存 api
- python - Python3 - 关于同一属性的多次验证的说明