Minidom - 检查 XML 中是否存在标签
Minidom - check if tag is present in XML
我有一个脚本遍历目录中的所有 XML 文件,然后解析这些 XML 文件以获取元素 IS
标记 ICP
中的数据。但是,这些 XML 文件有数千个,其中一些文件可能在 IS
中没有标签 ICP
。有没有办法通过 minidom 做到这一点?
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...')
我在谷歌上搜索了很多,但我无法得到关于如何使用 minidom 检查 XML 中是否存在标签的简单答案。
你能给我一些建议吗?
您可以使用 in
运算符
检查是否存在 icp
for item in itemlist:
if( 'icp' in item.attributes ):
SeznamICP_all.write(item.attributes['icp'].value + '\n')
break;
您可以使用hasAttribute(attributeName)
方法:
....
itemlist = xmldoc.getElementsByTagName('is')
if itemlist[0].hasAttribute("icp"):
SeznamICP_all.write(itemlist[0].attributes['icp'].value + '\n')
我有一个脚本遍历目录中的所有 XML 文件,然后解析这些 XML 文件以获取元素 IS
标记 ICP
中的数据。但是,这些 XML 文件有数千个,其中一些文件可能在 IS
中没有标签 ICP
。有没有办法通过 minidom 做到这一点?
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...')
我在谷歌上搜索了很多,但我无法得到关于如何使用 minidom 检查 XML 中是否存在标签的简单答案。
你能给我一些建议吗?
您可以使用 in
运算符
icp
for item in itemlist:
if( 'icp' in item.attributes ):
SeznamICP_all.write(item.attributes['icp'].value + '\n')
break;
您可以使用hasAttribute(attributeName)
方法:
....
itemlist = xmldoc.getElementsByTagName('is')
if itemlist[0].hasAttribute("icp"):
SeznamICP_all.write(itemlist[0].attributes['icp'].value + '\n')