Я пишу программу, которая получит строку через стандартный ввод. Строка всегда будет иметь root узел <Exam>
и два дочерних узла: <Question>
и <Answer>
. Что это за функция, которая проверяет, правильно ли отформатирован XML (не пропущены ли теги или угловые скобки)?
Я пытался использовать etree, но сталкиваюсь с ошибками:
def isProperlyFormattedXML():
parser = etree.XMLParser(dtd_validation=True)
schema_root = etree.XML('''\
<Exam>
<Question type="Short Response">
What does OOP stand for?
</Question>
<Answer type="Short Response">
"Object Oriented programming"
</Answer>
</Exam>
''')
schema = etree.XMLSchema(schema_root)
#Good xml
parser = etree.XMLParser(schema = schema)
try:
root = etree.fromstring("<a>5</a>", parser)
print ("Finished validating good xml")
return True
except lxml.etree.XMLSyntaxError as err:
print (err)
#Bad xml
parser = etree.XMLParser(schema = schema)
try:
root = etree.fromstring("<a>5<b>foobar</b></a>", parser)
except lxml.etree.XMLSyntaxError as err:
print (err)
return False
Ошибка:
lxml.etree.XMLSchemaParseError: The XML document 'in_memory_buffer' is not a schema document.```