【问题标题】:How to get selected text between different tags with XPath?如何使用 XPath 在不同标签之间获取选定的文本?
【发布时间】:2019-08-17 10:18:12
【问题描述】:

我尝试使用 XPath 从 span 标记之间获取文本值,其中不包含值为“隐藏”的类属性。请根据我的示例代码向我展示正确的方法。我的代码只是大型 HTML 代码的一部分。

我试过这个:

//div[@class='nr']//span[contains(@class,'hide')]

...这是获得具有“隐藏”类的spans,但我无法否定选择。我尝试了很多方法,但都没有成功。

<div class="nr" x-ms-format-detection="none">
    <i class="icon icon_phone">Tel.</i>
    <span class="nr">
        <span>
            <span class="hide"> 7</span>
            0
            <span class="hide"> 3</span>
            1
            <span class="hide"> 62</span>
            7
            <span class="hide"> 129</span>
            9
            <span class="hide"> 3</span>        
            <span class="hide">&nbsp;</span>
            2
            <span class="hide"> 279</span>
            <span class="hide"> 061</span>
            9
            <span class="hide"> 91</span>
            0
            <span class="hide"> 764</span>
            <span class="hide"> 2</span>
            5
            <span class="hide">&nbsp;</span>
            9
            <span class="hide"> 018</span>
            <span class="hide">&nbsp;</span>
            9
            <span class="hide"> 16</span>
            9
        </span>
    </span>
</div>

预期结果如下所示: 01792905999

【问题讨论】:

标签: xpath


【解决方案1】:

这仅适用于 XPath-2.0。
一种方法是选择作为某个&lt;span&gt; 节点的子节点的所有text() 节点:

string-join(//div[@class='nr']/span[@class='nr']/span/text()/normalize-space())

【讨论】:

  • 我的问题是关于如何区分值而不是如何连接。您的答案将产生错误的结果:703162712993227906199107640590189169 预期结果需要是一个字符串:01792905999(没有&lt;span class="hide"&gt; 值)或按正确顺序排列的数字数组。
  • @LisaWarner:我用 Saxon XSLT 仔细检查了我的代码,返回值正确且符合要求。但我不知道您使用的是什么 XSLT 处理器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 2019-11-01
  • 2013-10-03
  • 2019-09-19
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
相关资源
最近更新 更多