python - 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.```
解决方案
你已经有了解决方案。你必须使用 try/except 来检查。
推荐阅读
- android - 没有注册 OpKernel 以支持 Android 上的 Op 'ExtractImagePatches'
- javascript - Angular中的图像放大镜
- apache - 调用 WLAuthorizationManager.obtainAccessToken 时状态为“201”和错误消息“已创建”的失败响应
- javascript - 数组和对象如何是可变的,而字符串、数字和所有原始数据类型是不可变的?
- c# - 如何自动调整从 Xamarin Forms 视图转换为 UIView 的视图中的子视图大小?
- java - Hibernate 映射,其中一个类的多个属性映射到同一个类
- dialogflow-es - 有没有办法回到意图的后备阶梯?
- c - 在 C 中将 8.24 定点、0.000000000000000 转换为 1.000000000000000 范围到 uint32_t
- python-3.x - 单例只包含一个字典,静态可访问
- angular - 我试图在父组件 onClick 中显示隐藏动态添加的组件