То есть я в начале хочу описать структуру xml в каком-то виде:
- какой элемент где встречается (какой у него родитель)
- сколько элементов может быть (1, несколько, обязательно ли наличие хотя бы одного)
- содержит ли элемент значение, какое (число, строка, одна из возможных строк)
- и прочее
далее я кормлю этому xml и иду по полученной структуре. Если что-то не так. то выбрасываем исключение. Я не хочу на каждом шаге писать код вида
a = node.value
if a is None:
raise ...;
if a not in (...):
raise ...;
try:
a = int(a)
except:
raise ...;
в идеале валидация должна идти вместе с парсингом, чтоб я мог сделать следующее: * если элементе a содержит строку 111, то должен быть обязательно элемента а_a * если элемент a содержит строку 222, то должен быть обязательно элемент a_b
Зачем это надо? Необходимо парсить xml сложно вида. Причем мы хотим парсить ее не целиком (документ там о ее содержании более 300 страниц), да и стандарт они меняют часто. Надо, чтоб если мы встретили что-то неожиданное, мы сразу падали.