- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试轻松访问 xml 文件中的值。
<artikelen>
<artikel nummer="121">
<code>ABC123</code>
<naam>Highlight pen</naam>
<voorraad>231</voorraad>
<prijs>0.56</prijs>
</artikel>
<artikel nummer="123">
<code>PQR678</code>
<naam>Nietmachine</naam>
<voorraad>587</voorraad>
<prijs>9.99</prijs>
</artikel>
..... etc
如果我想访问值ABC123,我该如何获取它?
import xmltodict
with open('8_1.html') as fd:
doc = xmltodict.parse(fd.read())
print(doc[fd]['code'])
最佳答案
使用你的例子:
import xmltodict
with open('artikelen.xml') as fd:
doc = xmltodict.parse(fd.read())
如果您检查 doc
,您会看到它是一个 OrderedDict
,按标签排序:
>>> doc
OrderedDict([('artikelen',
OrderedDict([('artikel',
[OrderedDict([('@nummer', '121'),
('code', 'ABC123'),
('naam', 'Highlight pen'),
('voorraad', '231'),
('prijs', '0.56')]),
OrderedDict([('@nummer', '123'),
('code', 'PQR678'),
('naam', 'Nietmachine'),
('voorraad', '587'),
('prijs', '9.99')])])]))])
根节点称为 artikelen
,还有一个子节点 artikel
,它是 OrderedDict
对象的列表,所以如果您想要 code
每篇文章,你会做:
codes = []
for artikel in doc['artikelen']['artikel']:
codes.append(artikel['code'])
# >>> codes
# ['ABC123', 'PQR678']
如果您只在nummer
为121
时特别想要code
,您可以这样做:
code = None
for artikel in doc['artikelen']['artikel']:
if artikel['@nummer'] == '121':
code = artikel['code']
break
也就是说,如果您正在解析 XML 文档并想搜索这样的特定值,我会考虑使用 XPath expressions , ElementTree
支持。
关于python - 如何使用 xmltodict 从 xml 文件中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40154727/
所以我有一个像这样的 XML: Amazon .. 1 Jhon 2 Jhon
我有一个来自 xmltodict 的基本示例,它与项目 github 页面上给出的示例非常相似。 def handle(_, book): print(book['title']) r
如果“车库”中只有一辆“汽车”,则以下代码会产生错误: import xmltodict mydict = xmltodict.parse(xmlstringResults) for carsI
import xmltodict test_data = {'value1': 1, 'parent_lvl1': {'parent_Lvl2': {'value1': 2, 'value2': 3}
我是 Python 的新手,我使用 Pipenv 创建了一个项目,该项目使用了 xmltodict 模块。我看过一些类似的问题,但找不到我需要做什么。 我已经使用 pipenv 安装了 xmltodi
在为 python 安装 xmltodict 包时出现以下错误。 点安装 xmltodict 下载/解压 xmltodict 为包 xmltodict 运行 setup.py egg_info 回溯(
我正在尝试使用 xmltodict 将 XML 内容作为 python 对象进行操作,但我面临着正确处理 CDATA 的问题。我想我在某处遗漏了一些东西,这是我的代码: import xmltodic
有没有办法创建像这样给定多个 OrderedDict 的 xml 输出 data = OrderedDict([ ... ('addresses', OrderedDict([
我使用 xmltodict 导入时是否做错了什么?当我导入数据时,我只收到 2 个项目,第一个是根级别对象,第二个是其余值。 In [58]: with open('20160305RAND0_edi
我正在使用 xmltodict解析 xml。 如果我们解析无效的 xml,它会抛出一个 ExpatError。 我如何捕捉到它?这是我在 ipython shell 中尝试过的内容 >>> impor
我正在尝试解析 XML 文件并将其导入 SQLITE 数据库。 XML 看起来像这样: unit name 00032749 stuff n
我正在使用 xmltodict 进行 XML 解析/反解析,我需要在处理一个文档时保留 XML 元素的顺序。玩具 REPL 示例: >>> import xmltodict >>> xml = """
我正在尝试轻松访问 xml 文件中的值。 ABC123 Highlight pen 231 0.56
我使用 xmltodict 模块解析了一个 xml 文件,结果存储在字典中。 现在我想删除字典每个键中的特殊字符@和#。 def remove_using_json(parse_result):
xmltodict将 XML 转换为 Python 字典。它支持命名空间。我可以按照主页上的示例成功删除命名空间。但是,我无法从我的 XML 中删除命名空间,也无法确定原因是什么?这是我的 XML:
为了使用 Python 将 XML 转换为 JSON,存在几种通常归结为相同原理的方法。今天提到最多的方法是xmltodict。 我正在尝试将多个 xml 文档转换为 JSON,但遇到问题如果元素在某
我有 ansible 版本 2.4.2。尝试将 Ansible 控制机 (Linux) 与 Windows 集成。检查并安装了所有预请求。 连接到 Windows 机器时出现以下错误 (ansible
我在使用 xmltodict 将 json 转换为 xml 时遇到问题。它适用于单个根和单个对象,但是当我尝试转换多个对象时,它返回 ValueError“ValueError:具有多个根的文档”。
我有一个奇怪的问题。 我在 Py2.7 上,我正在从 python 脚本调用一个 py 文件。下面是我的代码 caller.py import os import subprocess file
我正在尝试将数据从 XML 文件转换为 python 字典,但无法执行此操作。以下是我正在编写的代码。 import xmltodict input_xml = 'data.xml' # This
我是一名优秀的程序员,十分优秀!