繁体   English   中英

针对Schema lxml的Python XML验证

[英]Python XML validation against Schema lxml

我正在尝试针对XML文档的XSD验证XML文档。 我目前正在关注教程。

我能够读取我的XML文件而不会出现问题。 但是,我需要为模式提供一种编码类型。 否则,将导致'charmap' codec can't decode byte 0x81错误。

with open(os.path.join(settings.MEDIA_ROOT, xsd_filename), 'r', encoding='utf-8') as schema_file:
        schema_to_check = schema_file.read()

但是,当我添加编码时etree无法解析文件的内容? 返回的错误Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration. Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.

xmlschema_doc = etree.parse(StringIO(schema_to_check))

我不确定我知道发生了什么事。 从lxml网站上,我得到的印象是,我应该保留编码,但是我不确定该教程为什么起作用而我的却不起作用?

我的Python版本是3.6.4。

提前致谢。

此后,我修改了代码以直接解析文件。 这已经解决了我的问题,现在我可以验证我的架构。

代码修改:

with open(os.path.join(settings.MEDIA_ROOT, xsd_filename), 'r', encoding='utf-8') as f:                                                
     doc = etree.parse(f)      

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM