gpt4 book ai didi

minidom 中的 Python XML 处理

转载 作者:行者123 更新时间:2023-11-30 23:46:25 25 4
gpt4 key购买 nike

我有以下非常简单的 XML 文件,我想使用 minidom 快速解析每个设备的 imsi 元素。

    <device>
<imsi>01010101</imsi>
</device>
<device>
<imsi>123456</imsi>
</device>
<device>
<imsi>9876543</imsi>
</device>

--------------------------
CODE SNIPPET FOR PARSING
--------------------------

doc = xml.dom.minidom.parse("./input.xml")

for node in doc.getElementsByTagName("device"):
imsi = node.getElementsByTagName("imsi")
print str(imsi)

当我执行上面的代码片段时,我在终端中收到以下错误。您认为我应该对上面的代码进行哪些改进来解析每个设备的 imsi 元素?谢谢。

doc = xml.dom.minidom.parse("./input.xml")
File "/usr/lib/python2.6/site-packages/_xmlplus/dom/minidom.py", line 1915, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.6/site-packages/_xmlplus/dom/expatbuilder.py", line 926, in parse
result = builder.parseFile(fp)
File "/usr/lib/python2.6/site-packages/_xmlplus/dom/expatbuilder.py", line 207, in parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: junk after document element: line 4, column 0

在引入根节点后,我编写了以下代码,最终得到了奇怪的输出。您认为这里有什么问题?

     doc = xml.dom.minidom.parse("./input.xml") 
for node in doc.getElementsByTagName("device"):
imsi = node.getElementsByTagName("imsi")
print str(imsi)

[<DOM Element: imsi at 0x828636c>]
[<DOM Element: imsi at 0x82864ac>]
[<DOM Element: imsi at 0x828660c>]

以下代码解决了我的问题并正确打印了 IMSI 元素:

    for node in doc.getElementsByTagName("device"):
imsi = node.getElementsByTagName("imsi")
for a in imsi:
Title= a.firstChild.data
print Title

最佳答案

您的示例不是有效的 XML 文档,因为它没有根节点。插入一个即可得到类似的内容

<devices>
<device>
<imsi>01010101</imsi>
</device>
<device>
<imsi>123456</imsi>
</device>
<device>
<imsi>9876543</imsi>
</device>
</devices>

关于minidom 中的 Python XML 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com