Разобрать XSD-файл, используя python - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь создать XML-файл из заданной XML-схемы.Я был в состоянии сделать это с библиотекой Pyxb в Python.Но проблема в том, что, поскольку XSD становится огромным, невозможно вручную закодировать каждый и каждый тег.Существует ли какая-либо библиотека Python, которая создает структуру данных из заданного XSD-файла, которую можно повторить с помощью

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вы можете создать файл XML из файла XSD:

import requests

with open('file.xsd', 'r') as f:
    data = f.read()
r = requests.post('https://www.liquid-technologies.com/api/Converter', json={"Filename": "schema.xsd", "Type": "xsd", "Data": data, "TargetType": "xml", "Arguments": {"elementName": "Root", "elementNamespace": "", "addAnyAttributes": False, "addAnyElements": False, "forceOptionItemsToDepthOf": "4", "forceXsiNamespaceDelaration": False, "maxDepthToCreateOptionalItems": "7", "indent": "2", "indentChar": " ", "indentAttributes": False, "seed": "9722"}})
with open('file.xml', 'w') as f:
    f.write(r.json()['Files'][0]['Data'])
0 голосов
/ 14 февраля 2019

Эта библиотека, кажется, делает то, что вы хотите: https://pypi.org/project/xmlschema/

После просмотра документации я нашел этот пример кода: https://xmlschema.readthedocs.io/en/latest/usage.html#xsd-declarations

>>> import xmlschema
>>> from pprint import pprint
>>> schema = xmlschema.XMLSchema('xmlschema/tests/test_cases/examples/vehicles/vehicles.xsd')
>>> schema.types
NamespaceView({'vehicleType': XsdComplexType(name='vehicleType')})
>>> pprint(dict(schema.elements))
{'bikes': XsdElement(name='vh:bikes', occurs=[1, 1]),
 'cars': XsdElement(name='vh:cars', occurs=[1, 1]),
 'vehicles': XsdElement(name='vh:vehicles', occurs=[1, 1])}
>>> schema.attributes
NamespaceView({'step': XsdAttribute(name='vh:step')})

Так что, похоже, можноиспользоваться для создания структуры данных Python, которую вы можете перебирать из файла XSD.

Также этот вопрос может быть актуален: Как преобразовать XSD в класс Python

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