如何使用Python中的Amara库针对XSD架构验证xml文件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用Python中的Amara库针对XSD架构验证xml文件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2003字,纯文字阅读大概需要3分钟。
内容图文
![如何使用Python中的Amara库针对XSD架构验证xml文件?](/upload/InfoBanner/zyjiaocheng/825/eb2f8e0b95cb4e1181deb3798c8bbfeb.jpg)
以下Q的高额奖金:
你好,
这是我在使用Python 2.6,Amara2的Ubuntu 9.10上尝试过的
(顺便说一句,test.xsd是使用xml2xsd工具创建的):
g@spot:~$cat test.xml; echo =====o=====; cat test.xsd; echo ====
o=====; cat test.py; echo =====o=====; ./test.py; echo =====o=====
<?xml version="1.0" encoding="utf-8"?>==; ./test.py` >
test.txttest.xsd; echo ===
<test>abcde</test>
=====o=====
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="test" type="xs:NCName"/>
</xs:schema>
=====o=====
#!/usr/bin/python2.6
# I wish to validate an xml file against an external XSD schema.
from amara import bindery, parse
source = 'test.xml'
schema = 'test.xsd'
#help(bindery.parse)
#doc = bindery.parse(source, uri=schema, validate=True) # These 2 seem
to fail in the same way.
doc = parse(source, uri=schema, validate=True) # So, what is the
difference anyway?
#
=====o=====
Traceback (most recent call last):
File "./test.py", line 14, in <module>
doc = parse(source, uri=schema, validate=True)
File "/usr/local/lib/python2.6/dist-packages/Amara-2.0a4-py2.6-linux-
x86_64.egg/amara/tree.py", line 50, in parse
return _parse(inputsource(obj, uri), flags,
entity_factory=entity_factory)
amara.ReaderError: In file:///home/g/test.xml, line 2, column 0:
Missing document type declaration
g@spot:~$
=====o=====
那么,为什么我看到这个错误?此功能不受支持吗?
如何在具有XSD的情况下针对XSD验证XML文件
是否可以灵活地指向任何XSD文件?
谢谢,如果您有疑问,请告诉我.
解决方法:
如果您愿意使用除amara之外的其他库,请尝试lxml.它支持您想要轻松完成的任务:
from lxml import etree
source_file = 'test.xml'
schema_file = 'test.xsd'
with open(schema_file) as f_schema:
schema_doc = etree.parse(f_schema)
schema = etree.XMLSchema(schema_doc)
parser = etree.XMLParser(schema = schema)
with open(source_file) as f_source:
try:
doc = etree.parse(f_source, parser)
except etree.XMLSyntaxError as e:
# this exception is thrown on schema validation error
print e
内容总结
以上是互联网集市为您收集整理的如何使用Python中的Amara库针对XSD架构验证xml文件?全部内容,希望文章能够帮你解决如何使用Python中的Amara库针对XSD架构验证xml文件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。