繁体   English   中英

极少-检查XML中是否存在标签

[英]Minidom - check if tag is present in XML

我有一个脚本,该脚本遍历目录中的所有XML文件,然后解析这些XML文件以获取元素IS标签ICP的数据。 但是,这些文件有数千个,其中一些可能在IS没有标记ICP 有没有办法通过小事做呢?

我正在解析的XML示例具有元素IS和标签ICP

<is ico="0000000000" pcz="1" icp="12345678" icz="12345678" oddel="99">

我正在解析的XML示例具有元素IS但没有标签ICP

<is ico="000000000">

在这里,由于没有ICP我的脚本显然失败了。 如何检查ICP标签的存在?

我的剧本:

import os
from xml.dom import minidom

#for testing purposes
directory = os.getcwd()

print("Zdrojový adresář je: " + directory)
print("Procházím aktuální adresář, hledám XML soubory...")
print("Procházím XML soubory, hledám IČP provádějícího...")

with open ('ICP_all.txt', 'w') as SeznamICP_all:   
    for root, dirs, files in os.walk(directory):
        for file in files:
            if (file.endswith('.xml')):
                xmldoc = minidom.parse(os.path.join(root, file))
                itemlist = xmldoc.getElementsByTagName('is')
                SeznamICP_all.write(itemlist[0].attributes['icp'].value + '\n')

print("Vytvářím list unikátních IČP...")

with open ('ICP_distinct.txt','w') as distinct:
    UnikatniICP = []
    with open ('ICP_all.txt','r') as SeznamICP_all:
        distinct.writelines(set(SeznamICP_all))

input('Pro ukončení stiskni libovolnou klávesu...')

我在Google上搜索了很多,但是却无法获得有关如何使用minidom检查XML中是否存在标签的简单答案。

你能给我一些建议吗?

您可以使用hasAttribute(attributeName)方法:

....
itemlist = xmldoc.getElementsByTagName('is')
if itemlist[0].hasAttribute("icp"):
    SeznamICP_all.write(itemlist[0].attributes['icp'].value + '\n')

您可以使用in运算符检查icp是否存在

for item in itemlist:
    if( 'icp' in item.attributes ):
        SeznamICP_all.write(item.attributes['icp'].value + '\n')
        break;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM