我正在努力研究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>
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
输出是
HOST1
CHANNAME1
CHANNAME2
CHANNAME3
HOST2
CHANNAME1
CHANNAME2
CHANNAME3
Run Code Online (Sandbox Code Playgroud)
但我所需要的只是
HOST1
CHANNAME1
CHANNAME2
HOST2
CHANNAME3
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的节点服务器而不是整个xml文件中获取标签名称为"channel"的所有元素?
您的代码看起来是正确的。你有childNode它应该childNodes在的时候NAME作业中的时间,但我假设这只是你问题中的一个拼写错误。
但您的 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>
Run Code Online (Sandbox Code Playgroud)
通过该 XML 以及您提供的代码,我可以获得您期望的确切输出。
| 归档时间: |
|
| 查看次数: |
30870 次 |
| 最近记录: |