如何使用xpathselect以下sibling / xml标签

我有一个HTML文件(来自Newegg),他们的HTML组织如下。 规格表中的所有数据都是“ desc ”,而每个部分的标题都是“ 名称”。 以下是来自Newegg页面的两个数据示例。

<tr> <td class="name">Brand</td> <td class="desc">Intel</td> </tr> <tr> <td class="name">Series</td> <td class="desc">Core i5</td> </tr> <tr> <td class="name">Cores</td> <td class="desc">4</td> </tr> <tr> <td class="name">Socket</td> <td class="desc">LGA 1156</td> 

 <tr> <td class="name">Brand</td> <td class="desc">AMD</td> </tr> <tr> <td class="name">Series</td> <td class="desc">Phenom II X4</td> </tr> <tr> <td class="name">Cores</td> <td class="desc">4</td> </tr> <tr> <td class="name">Socket</td> <td class="desc">Socket AM3</td> </tr> 

最后,我希望有一个CPU类(已经设置),包括品牌,系列,核心和socketstypes的存储每个数据的类。 这是我能想到去做这件事的唯一方法:

 if(parsedDocument.xpath(tr/td[@class="name"])=='Brand'): CPU.brand = parsedDocument.xpath(tr/td[@class="name"]/nextsibling?).text 

并为此做其余的价值。 我将如何完成这个下一步,是否有一个更简单的方法来做到这一点?

我将如何完成这个下一步,是否有一个更简单的方法来做到这一点?

您可以使用

 tr/td[@class='name']/following-sibling::td 

但我宁愿直接使用

 tr[td[@class='name'] ='Brand']/td[@class='desc'] 

这假设

  1. 评估XPathexpression式的上下文节点是所有tr元素的父节点 – 在您的问题中未显示。

  2. 每个tr元素只有一个td其中class属性的值为'name' ,只有一个tdclass属性值为'desc'

尝试following-sibling轴( following-sibling::td )。