如何用XPath提取XML中指定td同级节点下strong标签内容?
解决XPath提取内容的问题
问题分析
你的XPath查询失败主要有两个原因:
- 未给后续兄弟节点
td添加命名空间前缀dns:,XML中所有元素都属于dns命名空间,必须用带前缀的节点名匹配。 - 目标内容嵌套在
div->strong层级下,直接取td节点无法拿到<strong>里的文本。
正确的XPath查询
根据你的XML结构,使用以下XPath可以直接提取目标内容:
//dns:table/dns:tbody//dns:tr/dns:td[contains(text(), 'genomic')]/following-sibling::dns:td[1]//strong/text()
说明
following-sibling::dns:td[1]:匹配第一个td的下一个兄弟td节点(即包含strong的那个td),必须加dns:前缀才能正确识别命名空间下的元素。//strong/text():深入td内部,提取<strong>标签内的文本内容。
如果你的XML结构中实际没有dns:tbody节点(比如你提供的代码片段里<tr>没有被<tbody>包裹),可以去掉dns:tbody部分,使用:
//dns:table//dns:tr/dns:td[contains(text(), 'genomic')]/following-sibling::dns:td[1]//strong/text()
内容的提问来源于stack exchange,提问作者user23812247
相关产品推荐
相关产品推荐

