2010-10-16 96 views
1

我有作为XML文档存储的HTML内容(使用HTML敏捷包)。我知道一些XPath,但是我无法将我需要的确切内容归零。用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> 

什么是XPath获得“图像/ KC0763_l.jpg”和“圆T恤 - 海军”?这是我得到了多少,但它是错误的。主要是在这一点上的伪代码:

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

任何帮助获取此权利将不胜感激。

+0

食物问题,+1!查看我的答案以获得更好,更高效的解决方案并获得详细解释。 :) – 2010-10-16 14:55:59

回答

1

以下XPath将让你到src属性在img标签:

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

而同样,这将让你的ALT属性:

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

从那里你可以得到属性文本。如果你只想找到匹配 'large_image_display' 了的人,那么你会进一步筛选这样的:

1

使用下面的XPath表达式

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

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

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

在这种特殊情况下,我们知道html元素是文档的顶层元素,我们可以简单地通过/html来选择它 - 而不是//html

你的主要问题是,在你的表情,你用\\\并有XPath中没有这样的运营商。您尝试使用的正确XPath操作符是///的缩写。