gpt4 book ai didi

Python XML Minidom 通过子节点中的标签获取元素

转载 作者:太空狗 更新时间:2023-10-29 22:31:03 28 4
gpt4 key购买 nike

我目前正在使用 IRC Bot,并希望从如下所示的 XML 文件中检索配置:

<server>
<host> HOST1 </host>
<port> 6667 </port>
<channel>
<name> CHANNAME1</name>
</channel>
<channel>
<name> CHANNAME2 </name>
</channel>
</server>
<server>
<host> HOST2 </host>
<port> 6667 </port>
<channel>
<name> CHANNAME3 </name>
</channel>
</server>

我的代码是这样的:

doc = minidom.parse(xml)
node = doc.documentElement
servers = doc.getElementsByTagName("server")

for server in servers:

channels = server.getElementsByTagName("channel")
host = server.getElementsByTagName("host")[0].childNodes[0].data
print host

for channel in channels:
NAME = channel.getElementsByTagName("name")[0].childNode[0].data
print NAME

输出是

HOST1
CHANNAME1
CHANNAME2
CHANNAME3
HOST2
CHANNAME1
CHANNAME2
CHANNAME3

但我只需要

HOST1
CHANNAME1
CHANNAME2
HOST2
CHANNAME3

有没有办法在我的节点服务器中获取所有带有标签名称“channel”的元素而不是整个 xml 文件?

最佳答案

您的代码看起来是正确的。你有 childNode 而它应该是 NAME 分配中的 childNodes ,但我假设这只是你问题中的错字。

不过您的 XML 无效。您需要有某种根节点来包装服务器。正如目前所写的那样,我不希望它能成功解析。它应该看起来像这样:

<servers>
<server>
<host> HOST1 </host>
<port> 6667 </port>
<channel>
<name> CHANNAME1</name>
</channel>
<channel>
<name> CHANNAME2 </name>
</channel>
</server>
<server>
<host> HOST2 </host>
<port> 6667 </port>
<channel>
<name> CHANNAME3 </name>
</channel>
</server>
</servers>

使用该 XML 和您提供的代码,我得到了您期望的准确输出。

关于Python XML Minidom 通过子节点中的标签获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17390166/

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