//book/author/following-sibling::title
时间: 2025-04-08 19:12:37 浏览: 24
### 使用XPath查找`book`作者后面的兄弟节点标题
在XML文档中,为了找到某个特定节点之后的兄弟节点,可以利用XPath中的`following-sibling::`轴。此轴用于选取当前节点之后的所有同级节点。
对于题目描述的需求——寻找`book/author`节点后的兄弟节点`title`,可以通过以下XPath表达式实现:
```xpath
/book/author/following-sibling::title
```
上述表达式的含义是从根节点开始定位到`book/author`节点,并通过`following-sibling::`轴获取其后续所有的兄弟节点,最后筛选出名为`title`的节点[^1]。
如果需要进一步限定条件(例如仅匹配某些特定属性或值),可以在表达式中加入谓词(predicate)。例如,假设只想匹配`surname=Date`对应的`title`节点,则可写成如下形式:
```xpath
/book/author[surname='Date']/following-sibling::title
```
这里使用了谓词来过滤掉不符合`surname='Date'`条件的`author`节点[^3]。
另外需要注意的是,在实际操作过程中可能遇到命名空间的问题。如果有默认命名空间定义或者前缀绑定存在的话,需确保正确声明这些命名空间以便于解析器能够识别目标元素名称[^2]。
```python
from lxml import etree
xml_data = '''
<Book>
<Author>
<Surname>Date</Surname>
</Author>
<Title>Database Systems</Title>
<Price>50</Price>
</Book>
'''
root = etree.XML(xml_data)
# 查找 Author 后面的 Title 节点
titles = root.xpath('/Book/Author/following-sibling::Title')
for title in titles:
print(title.text.strip())
```
以上Python代码片段展示了如何运用lxml库执行基于给定XPath查询语句的操作过程。
阅读全文
相关推荐



















