Я работаю с несколькими объектами XElement
, чтобы предоставить некоторые определенные пользователем данные для нескольких объектов в моей библиотеке. Я пытаюсь избежать указания структуры всего XML-файла, потому что библиотеке все равно, как выглядит весь XML, если конкретные элементы, которые ему нужны, структурированы правильно.Проверка XML-схемы XElement
С этой целью у меня есть 3 отдельных файла XSD
, которые определяют схему для каждого из 3 XElements
требований к моему классу, однако я сталкиваюсь с некоторыми проблемами, проверяющими XElement на схему. Кажется, что нет способа сделать это без обходного пути.
На странице MSDN метод расширения XElement.Validate()
предназначен для повторной проверки подэлементов более крупного файла. Аргумент XmlSchemaObject
вызывает мои проблемы, поскольку я не могу предположить, что он будет присутствовать в любом из XElements
. Я думаю, что могу обойти эту проблему, захватив XmlSchemaElement
из моего XmlSchemaSet
, чтобы передать аргумент XmlSchemaObject
, но так как XmlSchemaSet
уже все определяет, кажется, странно это делать.
Есть ли лучший вариант для проверки XElement
со схемой без предварительной проверки всего XDocument
?
Должен ли я просто позволить бизнес-уровню обрабатывать проверку схемы в приложении и позволить библиотеке правильно сформировать XElement
(я рассмотрел эту опцию, но в качестве личного предпочтения предпочитаю избегать бросать исключения и скорее просто позволить вызывающий метод знает, что XElement
недействителен с помощью возвращаемого параметра).
Я понятия не имею, почему я не думал об упаковке кода в свой собственный метод расширения XElement.Validate(). Кажется настолько логичным сейчас, что вы это говорите. Создание «XDocument» - еще одна хорошая идея, которая должна была произойти тоже меня (я потратил слишком много времени, пытаясь выяснить, как ее преобразовать, и я пропустил очевидное решение). Я буду экспериментировать с обоими и видеть, что я предпочитаю. – psubsee2003