如何为从XML文件解析的空元素创建Python占位符?

2024-06-26 15:18:15 发布

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

首先,我想说我对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>

Tags: 数据nameipbrowser元素source列表root