首先,我想说我对Python很陌生,但我喜欢这种语言。在
问题: 我得到了一个非常大的XML格式的Juniper配置文件。我使用ElementTree库来解析文件。该文件有5个主根(父级)和几个嵌套的子级。我们试图将文本附加到来自多个元素标记的多个列表中,并显示数据。我已经验证了每个路径。我认为问题是有些元素是空的,所以当我显示每个列表中的数据时,相应的数据输出与XML文档中的内容不匹配。在解析文档并将元素追加到列表时,有没有方法告诉ElementTree,如果元素文本是空的,则追加“none”作为字符串?可以说是元素占位符。我的希望是,当我显示多个列表的数据时,它将与XML文档中的内容相匹配,因为在每个列表的迭代中考虑的元素数量相同。在
谢谢你!在
代码示例:
import xml.etree.ElementTree as ET
# file to parse, submit to memory
tree = ET.parse('JuniperXmlConf-Name-NewSSLVPNA.xml')
root = tree.getroot()
#Defining the relevant root by tag. Children of a Root Tag
user_realms = root[3][0]
user_roles = root[3][1]
#Defining dictionaries Children of Children (subelements)
name = []
idletimeout = []
maxtimeout = []
reminder = []
limit_concurrent_users = []
guaranteed_minimum = []
maximum = []
max_sessions_per_user = []
user_names = []
# Parsing Data into Lists from User_Roles.
#Notice .text method
for child in user_roles:
try:
name.append(child[0].text)
except IndexError:
continue
...
...
# Counter displays data as name is argument
i = 0
for value in (name):
try:
i += 1
print("Name: {}, Idletimeout {}, Maxtimeout {}, Reminder {}".format(name[i],
idletimeout[i], maxtimeout[i], reminder[i]))
except IndexError:
break
"""
Example of XML:
"""
<users>
<user-realms>
<realm>
<name>Customer Name here</name>
<authentication-policy>
<source-ip>
<customized>any-ip</customized>
<ips>
</ips>
</source-ip>
<browser>
<customized>user-agent here</customized>
<user-agent-patterns>
</user-agent-patterns>
</browser>
........
........
<users>
<user-realms>
<realm>
<name></name>
<authentication-policy>
<source-ip>
<customized>any-ip</customized>
<ips>
</ips>
</source-ip>
<browser>
<customized>user-agent here</customized>
<user-agent-patterns>
</user-agent-patterns>
</browser>
目前没有回答
相关问题 更多 >
编程相关推荐