Python minidom check元素存在

2024-05-29 02:21:21 发布

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

我有一个具有以下结构的xml文件:

<?DOMParser ?> 
<logbook:LogBook xmlns:logbook="http://www/logbook/1.0"  version="1.2">
<visits>
<visit>
    <general>
       <technology>EB</technology>
    </general>
</visit>
<visit>
<general>
    <grade>23242</grade>
    <technology>EB</technology>
</general>
</visit>
</visits>
</logbook:LogBook>

我想检查visit标记中是否存在每一列,如果不存在,我想返回None,因此我编写了以下代码:

^{pr2}$

这不起作用,因为它不会为不存在的元素返回None。我得到了index error,因为第一个grade不存在。在

我也尝试了this solution来使用hasChild(),但它给出了错误:

 'Element' object has no attribute 'hasChild'

你知道吗?在


Tags: 文件nonexmlvisit结构logbookgeneralgrade
1条回答
网友
1楼 · 发布于 2024-05-29 02:21:21

Question: minidom check element exists

不使用索引,而是使用生成的NodeLists,例如:

# Get List of Nodes with Tag <visit>
visits = doc.getElementsByTagName('visit')

# Iterate NodeList
for n, visit in enumerate(visits, 1):
    print('{}:{}'.format(n, visit))

    # Get SubNodes with Tag <general>
    general = visit.getElementsByTagName('general')

    # First Error Condition
    if general:
        # Iterate all Tag Names
        for subtag in ['grade', 'technology']:
            # Second Error Condition, assuming only ONE SubNode <general>
            if not general[0].getElementsByTagName(subtag):
                print('\tMissing Subtag <{}>'.format(subtag))
    else:
        print('\tMissing Tag <general>')

Output:

<Element {http://www/logbook/1.0}LogBook at 0xf707f52c>
1:<DOM Element: visit at 0xf6a6125c>
    Missing Subtag <grade>
2:<DOM Element: visit at 0xf6a6184c>

用Python:3.4.2测试

相关问题 更多 >

    热门问题