首页 > 解决方案 > Python:如何检查 XML 字符串是否是有效的 XML

问题描述

我正在编写一个程序,它将通过标准输入接收一个字符串。字符串将始终具有根节点<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.```

标签: pythonxml

解决方案


你已经有了解决方案。你必须使用 try/except 来检查。


推荐阅读