V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stupidcat
V2EX  ›  编程

问个关于 xpath 的问题

  •  
  •   stupidcat · 2015-01-15 15:03:27 +08:00 · 2364 次点击
    这是一个创建于 3577 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有一段xml:

    <span>
    <a class="copy">复制</a>
    <a class="download 100" href="www.xxxxx.com/xxxxx">下载</a>
    <a ....>XXX</a>
    <a ....>YYY</a>
    </span>
    

    我想从中取出“下载”的那个<a>元素。

    通过使用contains函数,下面的这个xpath是奏效的:
    //span/a[contains(@class, "dowload")]

    但是我现在想通过匹配那两个汉字“下载”来取出那个<a>,应该怎么写xpath?
    下面这个xpath取出的是<span>,但我想取出那个<a>啊……
    //span[contains(a, "下载")]

    6 条回复    2015-01-15 16:10:08 +08:00
    hcymk2
        1
    hcymk2  
       2015-01-15 15:28:38 +08:00   ❤️ 1
    //span[a=下载']/a
    hcymk2
        2
    hcymk2  
       2015-01-15 15:29:35 +08:00   ❤️ 1
    ...
    少了个引号
    //span[a='下载']/a
    imn1
        3
    imn1  
       2015-01-15 15:46:25 +08:00   ❤️ 2
    //a[text()='下载']
    //a[contains(text(), "下载")]

    建议你 google 搜索 'xpath css cheatsheet',会找到两份 pdf,自己留下,很有用的
    信得过(不是说我,是这个链接)的就点 http://bit.ly/gTd5oc ,就是这两份
    stupidcat
        4
    stupidcat  
    OP
       2015-01-15 16:04:35 +08:00   ❤️ 1
    @hcymk2 我测试了一下,这样返回的是所有的<a>啊……
    你看,首先找到子元素有“包含了‘下载’的a”的span,然后找到这个span的a,那么不就返回这个span下面所有的a了。。。?
    stupidcat
        5
    stupidcat  
    OP
       2015-01-15 16:07:06 +08:00   ❤️ 1
    @imn1 很有用,已经下载了,谢谢~~
    hcymk2
        6
    hcymk2  
       2015-01-15 16:10:08 +08:00   ❤️ 1
    @stupidcat
    我弄错了。。 应该用//span/a[text()='下载']
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5432 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:26 · PVG 09:26 · LAX 18:26 · JFK 21:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.