Если вы выполняете операции только для чтения, я бы порекомендовал вам сделать это простым и не вводить новые классы, которые не приносят никакой пользы.Просто оставьте комментарий, что вам нужно добавить модель представления, если вы когда-нибудь захотите поддержать редактирование структуры.Даже если вы хотите иметь возможность редактировать документ, вы все равно сможете привязать его к документу и узлам напрямую, в зависимости от ваших потребностей.
Если вам нужна более продвинутая поддержка (например, INotifyPropertyChanged
),Я предлагаю вам создать иерархию классов, подобную исходному API, на основе XObject
.Я бы добавил только те свойства, которые я планировал напрямую поддерживать в пользовательском интерфейсе.Затем я создал бы отдельный класс модели, который мог бы преобразовать иерархию XDocumentViewModel
в реальную XDocument
и обратно.
... как [представить] X-документ XSD вViewModel, чтобы я мог выбрать XNode.
Что вы подразумеваете под select?
Если вы имеете в виду пользовательский интерфейс, то об этом позаботятся в XAML.
Если вы говорите о запросе модели представления, то вы можете попытаться использовать существующий API запросов LINQ XML для базового документа.Сохраняйте внутреннее сопоставление словаря XObjects обратно к объектам модели представления, а когда вы получаете результаты, просто посмотрите каждый результат в словаре, прежде чем возвращать его.