2014-01-03 2 views
2

Мне задали задачу написать сложный XML-файл (у меня есть XML-схема, XSD) на C#, который имеет возможность быть довольно большим в зависимости от ситуации. Я хотел бы реализовать потоковое вещание, так как файл может быть большим, поэтому лучше всего использовать XMLWriter. Прежде чем я перейду по пути расширения класса XMLWriter и написав кучу пользовательского кода, мне было интересно, можно ли каким-то образом использовать схему XML, которая у меня есть? Я знаю, что я могу преобразовать свою схему в объекты C# с помощью инструмента определения схемы XML в Visual Studio, но я не знаю, могу ли я это использовать с XMLWriter. Я преобразовал XML-схему в объекты C# и сериализовал их с использованием XMLSerializer в прошлом, но не с XMLWriter.Использование .NET XMLWriter с XSD

ответ

2

См Создание XML-документов из XML-схем http://msdn.microsoft.com/en-us/library/aa302296.aspx

Резюме: Priya Лакшминарайанан показывает, как вы можете использовать классы в пространстве имен System.XML.Schema в Microsoft .NET Framework для создания инструмента, который генерирует пример XML документы, соответствующие данной схеме.

В Проводнике Схемы Visual Studio вы можете сгенерировать экземплярный документ из любого определения элемента в вашей Схеме. В этой статье представлен базовый код, который делает это. Следует отметить, что XMLSpy Altova имеет более гибкий инструмент для генерации экземпляров из схемы, позволяя вам устанавливать различные параметры о глубине, повторении и генерируемых текстовых значениях.

Я использовал код XMLGenerator, включенный в статью, чтобы создать класс, который генерирует новые экземпляры XML-документа из моей схемы для 20 типов документов, которые мы определяем. Я добавил подсказки в своей Схеме как атрибуты в моем собственном пространстве имен, чтобы помочь XMLGenerator сгенерировать минимально допустимый документ с некоторым текстом по умолчанию, чтобы помочь пользователям начать работу с новым документом. Таким образом, вы можете многое сделать с XmlGenerator.

+1

При ссылке на ресурс для ответа полезно подытожить соответствующее содержание. Это дает лучший ответ (проще читать и сразу получать информацию), и в случае, если удаленный сайт когда-либо недоступен, информация все еще существует. –

+0

Это имеет смысл, я сделаю это в будущем. Это была моя первая попытка ответить на StackOverflow, поэтому я рад за помощь. – David

Смежные вопросы