проверка XML в Java, как документ построен - PullRequest
0 голосов
/ 04 января 2010

Я работаю над преобразованием электронной таблицы Excel в документ XML, который необходимо проверить по схеме. В настоящее время я создаю XML-документ, используя API-интерфейс DOM, и проверяю в конце, используя SAX и пользовательский обработчик ошибок. Однако мне бы очень хотелось иметь возможность проверять xml, созданный в каждой ячейке, когда я анализирую документ Excel, чтобы я мог указать, какие ячейки проблематичны, более дружественным способом.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что после проверки xml для простых типов, после того как они встроены в сложный тип, все дочерние узлы снова проверяются, что приводит к избыточным ошибкам.

Я нашел этот вопрос здесь, на SO, но он использует C # и Microsoft API.

Мысли? Спасибо!

Ответы [ 4 ]

2 голосов
/ 05 января 2010

Извините, но я не вижу проблемы. Вы создаете XML, так какой смысл проверять XML во время его создания?

Вы хотите проверить содержимое ячейки? Если да, то напишите логику проверки в ваш код. Эта логика проверки может повторять схему, но я подозреваю, что на самом деле она будет гораздо более детальной, чем схема.

Вы хотите проверить вывод вашей программы? Если да, то напишите модульные тесты.

1 голос
/ 06 января 2010

Итак, решение, которое я решил использовать и почти завершил реализацию, заключалось в использовании XSOM для анализа XSD. Затем при разборе файла Excel я посмотрел имя столбца в разобранном XSD, чтобы снять ограничения (поскольку заголовки столбцов отображаются на простые типы в XSD), а затем провел ручную проверку на соответствие ограничениям. Я все еще строю дерево, чтобы в конце его можно было проверить все дерево XML на соответствие XSD, поскольку есть некоторые вещи, которые я не могу уловить на уровне ячеек.

Спасибо за ваш вклад.

1 голос
/ 05 января 2010

Вы могли бы попытаться, чтобы ваш синтаксический код запускал SAX-события вместо непосредственного создания DOM. Затем вы можете просто зарегистрировать проверяющий SAX ContentHandler, чтобы прослушать его и создать для вас DOM. Это должно обнаружить ошибки проверки по мере их появления.

0 голосов
/ 05 января 2010

Попробуйте построить схемы на нескольких уровнях детализации. Протестируйте простые (Ячейки) с наиболее гранулированными, а сложные (Ряды?) С менее детальной схемой, которая не разбивает сложные типы.

...