Python 3.x 从Python中的XSD文件中提取带有文档的枚举

Python 3.x 从Python中的XSD文件中提取带有文档的枚举,python-3.x,xsd,xmlschema,Python 3.x,Xsd,Xmlschema,我正试图编写一个函数,从XSD文件中获取一些值的描述,其结构如下 中心名单 中心列表寄存器 中心类型 自有中心 外部中心 联合中心 其他 使用解开 import untangle xsd_file = "C:\\code\\python\\xsd\\test.xsd" obj = untangle.parse(xsd_file) res = obj.xs_schema.xs_element.xs_complexType.xs_sequence.xs_element.x

我正试图编写一个函数,从XSD文件中获取一些值的描述,其结构如下


中心名单
中心列表寄存器
中心类型
自有中心
外部中心
联合中心
其他
使用解开

import untangle

xsd_file = "C:\\code\\python\\xsd\\test.xsd"
obj = untangle.parse(xsd_file)

res = obj.xs_schema.xs_element.xs_complexType.xs_sequence.xs_element.xs_complexType.xs_sequence.xs_element.xs_simpleType.xs_restriction.xs_enumeration

最后,我使用LXML和XMLSchema名称空间解决了我的问题

def get_value(self, field: str, code: str, file: str):
        
        desc = ""
            
        xsd_xml = ET.parse(file)
        search_elem = f".//{{http://www.w3.org/2001/XMLSchema}}element[@name='{field}']"
        element = xsd_xml.find(search_elem)
            
        search_enum = f".//{{http://www.w3.org/2001/XMLSchema}}enumeration[@value='{code}']"
        enumeration = element.find(search_enum)
            
        if enumeration is not None:
            documentation = enumeration.find(".//{http://www.w3.org/2001/XMLSchema}documentation")
            desc = documentation.text
        else:
            desc = "N/A"
            
        return desc

请编辑代码段并正确缩进XSD。XSD为“原样”。我在这里收到了XSDformat@kimbert我刚把文件缩进