基本上我正在使用以下XML:
<div>
<div>
<b>E-mail:</b>
<span>TheValue</span>
</div>
... and more div tags
</div>
请记住,有很多不同的div标签 - 但只有一个包含带有“电子邮件:”的内插文本的标签。
我要解析的是span标记的值,其中粗体标记等于“电子邮件:”。
我知道我可以做("//div//div[contains(@text(), 'E-mail:')].innerText;
但我想通过检查粗体标签是否包含电子邮件而不仅仅是整个div标签的innerText来做到这一点。
答案 0 :(得分:1)
//div/div[b = 'E-mail:']/span/text()
但是最后一个text()
是可选的
//div/div[b = 'E-mail:']/span
也可以。前者为您提供文本节点,后者为<span>
元素。
如果它们没有包裹在<div>
中,而只是紧跟在一起:
//b[. = 'E-mail:']/following-sibling::span[1]
请注意.innerText
是非标准的。您应该在现代浏览器中使用.textContent
。