python - 如何使用 lxml 和 XPATH 在单个查询中检索所有子节点

标签 python xml xpath lxml

这是我的xml数据

<location>
   <city>
      <name> New York</name>
      <type>non-capital</type>
   </city>

   <city>
        <name> London</name>
        <type>capital</type>
   </city>
</location>

使用 lxml 和 python

from lxml import etree as ET

parser = ET.XMLParser(recover=True)

tree = ET.fromstring(xml_data,parser)
print(tree.xpath('//city//name/text() | //city//type/text()'))

上面的代码有效,但我想要一个嵌套数组描述为 [['New York','non-capital'],['London','capital']]

获得上述内容的准确 xpath 查询/查询/循环组合是什么?

最佳答案

这是一种可能的方式:

.......
result = []
for city in tree.xpath('//city'):
    result.append([city.find('name').text, city.find('type').text])

print(result)
# output :
#[[' New York', 'non-capital'], [' London', 'capital']]

关于python - 如何使用 lxml 和 XPATH 在单个查询中检索所有子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29293993/

相关文章:

python - 使用 Python 将文本文件导入 Access 2003 数据库

python - 子图未正确填充

javascript - 如何在 XML View 中添加没有 syle 信息的 sapUI5 面板?

xslt - 在单行 Xpath 1.0 中保留操作数的优先级

python - 此代码中 `or None` 的用途是什么?

python - 如何在C++中展平颜色直方图?

php - 使用 NuSOAP 检索结果时出现 XML 错误(无效字符)

java - Ant和XML配置文件解析

xpath - 循环抓取同一页面上的多个元素,同时单独存储它们

r - 如何将 XPATH 值定义为 R 中 rvest 中 html_nodes 内的变量