在Python中基于XSD验证和填充XML中的默认值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中基于XSD验证和填充XML中的默认值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1389字,纯文字阅读大概需要2分钟。
内容图文
在针对XSD进行验证期间,如何在XML中填写默认值?如果我的属性未定义为use =“ require”且具有default =“ 1”,则可以将这些默认值从XSD填充到XML.
例:
原始XML:
<a>
<b/>
<b c="2"/>
</a>
XSD方案:
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:element name="b" maxOccurs="unbounded">
<xs:attribute name="c" default="1"/>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我想使用XSD验证原始XML并填充所有默认值:
<a>
<b c="1"/>
<b c="2"/>
</a>
如何在Python中获得它?
有了验证,就没有问题(例如XMLSchema).问题是默认值.
解决方法:
为了跟进我的评论,这里有一些代码
from lxml import etree
from lxml.html import parse
schema_root = etree.XML('''<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:element name="b" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="c" default="1" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>''')
xmls = '''<a>
<b/>
<b c="2"/>
</a>'''
schema = etree.XMLSchema(schema_root)
parser = etree.XMLParser(schema = schema, attribute_defaults = True)
root = etree.fromstring(xmls, parser)
result = etree.tostring(root, pretty_print=True, method="xml")
print result
会给你
<a>
<b c="1"/>
<b c="2"/>
</a>
我已经稍微修改了您的XSD,将xs:attribute包装在xs:complexType中并添加了架构名称空间.要填写默认值,您需要将attribute_defaults = True传递给etree.XMLParser(),它应该可以工作.
内容总结
以上是互联网集市为您收集整理的在Python中基于XSD验证和填充XML中的默认值全部内容,希望文章能够帮你解决在Python中基于XSD验证和填充XML中的默认值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。