我试图用lxml2.x获得一个具有特定xsd类型的元素列表,但是我不知道如何遍历特定类型的xsd。在
模式示例:
<xsd:element name="ServerOwner" type="srvrs:string90" minOccurs="0">
<xsd:element name="HostName" type="srvrs:string35" minOccurs="0">
xml数据示例:
^{pr2}$理想功能如下:
elements = getElems(xml_doc, 'string90')
def getElems(xml_doc, xsd_type):
** xpath or something to find the elements and build a dict
return elements
实际上,lxml对xmlschema的唯一特殊支持,如here所示,就是告诉您根据某种模式,某些文档是否有效。任何更复杂的事你都得自己动手。在
这应该是一个相对简单的两阶段过程,我认为获取模式中与您关心的类型匹配的所有
xsd:element
元素,并查看它们的名称:然后,从文档中获取每个名称的所有元素。在
^{pr2}$现在您有了一个元素列表,这些元素的名称与模式中的类型匹配。在
请注意,用于搜索文档的xpath表达式必须查看每个元素,因此,如果您可以将其压缩到只查看文档的子部分,那么它的速度会更快。在
相关问题 更多 >
编程相关推荐