【发布时间】:2019-07-16 10:15:53
【问题描述】:
我正在尝试检查一个 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 标头?
【问题讨论】:
-
在 XML 文档中包含 XML 声明是一种很好的做法,但这不是严格的要求。它在这里说“应该”:w3.org/TR/xml/#sec-prolog-dtd
-
嗨丹尼斯:你看到我的回答了吗?这对你来说是一个可行的解决方案吗?如果没有,您仍然有兴趣获得建议/答案吗?感谢您的回复。
标签: python xml elementtree xml-declaration