我正在尝试检查一个XML文件是否包含必要的XML声明(“头部”),比如:
<?xml version="1.0" encoding="UTF-8"?>
...rest of xml file...
我使用xml ElementTree读取和获取文件信息,但即使没有头部,似乎也可以成功加载文件。
到目前为止,我尝试的方法如下:
import xml.etree.ElementTree as ET
tree = ET.parse(someXmlFile)
try:
xmlFile = ET.tostring(tree.getroot(), encoding='utf8').decode('utf8')
except:
sys.stderr.write("Wrong xml2 header\n")
exit(31)
if re.match(r"^\s*<\?xml version=\'1\.0\' encoding=\'utf8\'\?>\s+", xmlFile) is None:
sys.stderr.write("Wrong xml1 header\n")
exit(31)
但是如果文件中没有标头,ET.tostring()函数会自动“制造”一个标头。
是否有办法使用ET检查xml标头?或者在使用ET.parse加载文件时,如何在文件不包含xml标头的情况下抛出错误?