Я работаю над проектом, который должен взять много разных источников данных и поместить их в таблицу данных.Для этого у нас есть способ импортировать данные через 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, но их возможности оставляют меня в покое, в замешательстве или в обоих случаях.