使用ElementTree的iter()解析XML时,在传递特定参数时找不到我的标记

2024-10-02 20:33:39 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试从标记返回属性值。按照ElementTree文档逐字逐句地进行操作并不会产生任何结果。没有错误,它只是运行,不打印任何内容。如果我不带参数运行iter(),它会打印每个标记,但是有了参数它就什么也不做。不知道发生了什么事。findall()也不起作用。在

如果我使用doc的XML,它可以很好地工作,但与我的不一样。我看到的唯一区别是doc-XML在同一个括号中结束的标记。在

毫无疑问,我使用的是正确版本的Python,所以我不知所措。下面是我的XML第一,DocXML第二,以及运行它的代码。在

<?xml version="1.0" encoding="iso_8859-1"?>
<day xmlns="x-schema:..\schema_ej.xml" FILE="90301007.009">
<trs F1068="SALE" F254="2019-03-01" F253="2019-03-01T12:21:30" F1056="007" F1057="009" F1035="11:52:53" F1036="12:21:30"
F1032="74925" F1764="00074732" F1185="7110" F1126="7110" F1127="Eva S.">
<r F1101="1"><itm F01="0071834383234" F02="SI SSND SOUL 35Z" F04="30" F03="100" F81="1" F79="1" F1007="3.99" F1006="1" F1080="0.938"/><F65>3.99</F65><F64>1</F64><F1263>0.09</F1263><key in="1013" fn="10725"/><key in="1013" fn="10735"/><key in="1013" fn="10746"/><key in="1013" fn="10715"/><key in="1013" fn="10777"/><key in="1013" fn="10736"/><key in="1013" fn="10710"/><key in="1013" fn="10747"/><key in="1013" fn="10775"/><key in="1013" fn="10726"/><key in="1013" fn="10760"/><key in="1013" fn="10200"/><key fn="30"/><key in="71834383234" fn="710"/></r>
</trs>
</day>
^{pr2}$
import xml.etree.ElementTree as ET
tree = ET.parse('90301007.xml')
root = tree.getroot()

for trs in root.iter('trs'):
    print(trs.attrib)

Tags: keyin标记参数docschemaxmlfn
1条回答
网友
1楼 · 发布于 2024-10-02 20:33:39

第一个XML的默认名称空间为x-schema:..\schema_ej.xml。在

请尝试将您的iter()改为:

root.iter(r'{x-schema:..\schema_ej.xml}trs')

See here有关ElementTree中命名空间的详细信息。在

See here获取有关XML命名空间的一般信息。在

相关问题 更多 >