代码之家  ›  专栏  ›  技术社区  ›  TruMan1

用xpath提取内容?

  •  1
  • TruMan1  · 技术社区  · 15 年前

    我将HTML内容存储为XML文档(使用HTML敏捷性包)。我知道一些XPath,但我无法将其归零到我需要的确切内容中。

    在下面的示例中,我尝试从大图像中提取“src”和“alt”文本。这是我的例子:

    <html>
    <body>
       ....
       <div id="large_image_display">
          <img class="photo" src="images/KC0763_l.jpg" alt="Circles t-shirt - Navy" />
       </div>
       ....
       <div id="small_image_display">
          <img class="photo" src="images/KC0763_s.jpg" alt="Circles t-shirt - Navy" />
       </div>
    </body>
    </html>
    

    “images/kc0763_l.jpg”和“circles T恤-navy”的xpath是什么?这就是我能走多远,但这是错误的。目前主要是伪代码:

    \\div[@class='large_image_display']\img[1][@class='photo']@src
    \\div[@class='large_image_display']\img[1][@class='photo']@alt
    

    如果能帮上忙,我们将不胜感激。

    2 回复  |  直到 15 年前
        1
  •  1
  •   mtreit    15 年前

    下面的xpath将为您提供img标记的src属性:

    '//html/body/div/img[@class="photo"]/@src'
    

    同样,这将使您得到alt属性:

    '//html/body/div/img[@class="photo"]/@alt'
    

    从这里可以看到属性文本。如果您只想找到与“大图像显示”匹配的图像,那么您将按如下方式对其进行进一步过滤:

    '//html/body/div[@id="large_image_display"]/img[@class="photo"]/@src'    
    
        2
  •  1
  •   Dimitre Novatchev    15 年前

    使用下列xpath表达式 :

    /html/body/div[@id='large_image_display']/img/@src
    

    /html/body/div[@id='large_image_display']/img/@alt
    

    总是尽量避免使用 // 缩写 ,因为它可能导致非常低效的评估(导致扫描整个(子)树)。

    在这种情况下,我们知道 html 元素是文档的顶部元素,我们可以通过 /html ——不是 //html .

    你的主要问题是 在你的表达中 \ \\ 在xpath中没有这样的操作符。您尝试使用的正确xpath运算符是 / 以及 / / 缩写。