Как создать объект Python из XSD с атрибутами - PullRequest
1 голос
/ 07 марта 2019

Я работаю над проектом, который должен взять много разных источников данных и поместить их в таблицу данных.Для этого у нас есть способ импортировать данные через XML-документ, в котором есть все поля, определенные в таблице.Некоторые из этих полей являются обязательными.Обязательные для заполнения поля имеют минимальное значение вхождения ненулевого положительного целого числа.

У меня есть файлы XSD для этих документов XML.Это не копия 1 к 1 (так как она проприетарна), но вот пример:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"   attributeFormDefault="unqualified">
    <xs:element name="Widget">
        <xs:complexType>
            <xs:all>
                <xs:element name="GuyWhoMadeWidget" nillable="true" minOccurs="1">
            </xs:all>
            <xs:attribute name="version" type="xs:string"/>
        <xs:complexType>
    </xs:element>
 </xs:schema>

Что я хочу сделать, это перейти к элементу <xs: element> и выполнить логику вPython о том, является ли minOccurs ненулевым значением.Вот некоторый псевдокод:

file_object = open(xsd_file)
required_fields = []
xsd_python_object = parse_xsd_to_python(file_object)
for element in xsd_python_object:
    if element.minOccurs != 0:
         required_fields.append(element.name)
print(required_fields)

Пример вывода здесь будет следующим:

Required fields for "Widget" table:
GuyWhoMadeWidget

Я изучал пакеты xmlschema и lxml, но их возможности оставляют меня в покое, в замешательстве или в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...