如何通过xml.etree.elementtree使用xpath
时间: 2024-04-30 09:23:58 浏览: 211
可以通过调用findall()方法和XPath表达式来在XML文档中查找元素。例如,以下代码将查找所有具有“name”属性且该属性的值为“John”的元素:
```
import xml.etree.ElementTree as ET
tree = ET.parse('example.xml')
root = tree.getroot()
for elem in root.findall(".//*[name='John']"):
print(elem.tag, elem.attrib)
```
相关问题
python xml.etree.ElementTree 遍历指定层级标签的数据
你可以使用ElementTree库中的findall方法和XPath表达式来遍历指定层级标签的数据。以下是一个示例代码:
```python
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('example.xml')
root = tree.getroot()
# 遍历指定层级标签
for item in root.findall('.//parent/child/grandchild'):
# 处理数据
print(item.text)
```
在这个示例中,XPath表达式`.//parent/child/grandchild`表示选择所有名称为grandchild的元素,其父元素是一个名称为child的元素,而这个元素的父元素是一个名称为parent的元素。这样,我们就只会遍历到指定层级的grandchild元素,而不会遍历到其他层级的grandchild元素。
python中xml.etree.ElementTree的findall会解析下一级吗
`findall()`方法会查找当前元素的所有子元素中符合条件的元素,包括下一级、下下级等。如果要查找下一级的元素,可以在标签名称前加上点号`.`。例如,以下代码将查找所有`book`元素下名为`author`的子元素:
```python
import xml.etree.ElementTree as ET
tree = ET.parse('books.xml')
root = tree.getroot()
authors = root.findall("./book/author")
for author in authors:
print(author.text)
```
这里使用了XPath表达式`"./book/author"`,其中点号表示从当前元素开始查找,`book`表示当前元素的子元素中查找名为`book`的元素,`author`表示`book`元素的子元素中查找名为`author`的元素。以上代码将输出所有`book`元素下的`author`元素的文本内容。
阅读全文