python - 从 XML 文件中提取文本
问题描述
我正在尝试使用 Python 脚本从 XML 文件中提取数据,但我无法让它深入。例如,我成功提取了“更新”和“已发布”类别,但没有提取其他类别。我对提取 alt1 和 alt2 特别感兴趣。
这是xml文件的结构:
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:as="http://atomserver.org/namespaces/1.0/">
<id>/electron/atom/v1/domesday/dblocks-CI-52-54/CI-522000-5473000.xml</id>
<as:revision>0</as:revision>
<updated>2011-04-29T11:40:19.000Z</updated>
<published>2011-04-29T11:40:19.000Z</published>
<content type="application/xml">
<block xmlns="">
<alt1>Some text</alt1>
<alt2>Some other thext</alt2>
</block>
</content>
</entry>
这是我迄今为止尝试过的:
import xml.etree.ElementTree as ET
tree = ET.parse(filename)
root = tree.getroot()
alt1elt = root.findtext('content/dblock/alt1')
alt2elt = root.findtext('content/dblock/alt2')
print(alt1elt)
print(alt2elt)
它打印
None
None
而不是我想要得到的两个字符串。你知道什么可以解决这个问题吗?
解决方案
from xml.dom import minidom
doc = minidom.parse("yourxmlfile.xml")
print(doc.getElementsByTagName("alt1")[0].firstChild.data)
print(doc.getElementsByTagName("alt2")[0].firstChild.data)
使用 minidom 提取数据的示例。
推荐阅读
- r - ggplot2 中的 stat_function() 是否适用于向量以外的参数?
- git - 如何在遵循时间顺序的同时重新提交到一个分支?
- javascript - MomentJS 错误地解析通过 GET 请求发送的 Unix 时间戳
- python - 比较多个信号的相似性
- angular - Angular CircleCI /usr/bin/xvfb-run: 183: /usr/bin/xvfb-run: ng: not found
- random - FPGA的verilog中的1024位伪随机发生器
- html - 面临引导卡无法使用引导程序 4 在轮播中同样设置高度的问题
- vue.js - Vue - 实现 this.$options.staticRenderFns
- node.js - 在 React 中从 SQL 表中显示表
- ios - 滚动到另一个时 TableView 折叠单元格:奇怪的行为