Visual studio обозреватель схемы xml

Обновлено: 03.07.2024

БлогNot. Табличный редактор XML-файла на Visual Studio

Табличный редактор XML-файла на Visual Studio

Сохраняем и загружаем данные формата XML, используем набор данных DataSet, добавляем к dataGridView ограничения на вводимые данные, меняем порядок перехода по ячейкам в dataGridView.

Поэтому следует пользоваться методами объекта DataSet

Дабы не переделывать вполне законченную статью, разработаем отдельное приложение, скажем, простенький табличный редактор успеваемости студенческой группы на основе компоненты DataGridView .

Создав новый проект Windows Forms с главной формой Form1 , добавим на неё компоненту DataGridView и растянем на всю форму (свойство Dock = Fill ). Также добавим к проекту контекстное меню contextMenuStrip с пунктами "Добавить" и "Удалить" и укажем его в свойстве ContextMenuStrip компоненты dataGridView1 .

Столбцы таблицы (фамилия, 17 граф для оценок или иных отметок, графа "зачёт") создадим программно по событию Load формы:

Перед этим, как и в статье, пропишем в классе формы глобальные величины:

и будем автоматически сохранять данные при выходе из программы (событие FormClosing ):

По выбору пункта меню "Добавить" выполняется следующее:

А пункт "Удалить" проще всего запрограммировать так:

Важно, что мы не пытаемся заносить данные "напрямую в таблицу", а добавляем их в набор. Применение AcceptChanges нужно, чтобы изменение данных немедленно отобразилось в таблице.

Контроль правильности ввода (не более 1 символа в графы отметок, не более 20 символов в графы "ФИО" и "Итого") сделаем следующими обработчиками:

dataGridView1_CellBeginEdit (на начало редактирования):

dataGridView1_CellValueChanged (по изменению значения в ячейке):

dataGridView1_EditingControlShowing (для установки своих обработчиков в дополнение к стандартным обработчиками событий компоненты):

Наша функция – дополнение к обработке KeyPress - разрешаем буквы, цифры, Bacspace и пробел. Она не член класса формы, просто включить в код:

dataGridView1_CellLeave (покидая ячейку, изменим правила перехода к следующей: по умолчанию – вниз, а мы хотим вправо):

Всё это вместе даст более-менее адекватное редактирование. Дело в том, что DataGridView обрабатывает многие клавиши своими собственными событиями и "не пускает" коды клавиш до уровня KeyPress или KeyDown ( KeyUp , вроде, выполняется).

XML используется повсюду от веб-служб, баз данных, конфигурационных файлов, до офисных документов. Эта статья познакомит вас с инструментальной поддержкой предлагаемой Visual Studio 2008, которая облегчает работу с XML. В статье рассматривается редактирование XML файлов, работа со схемами XML, отладка стилевых таблиц XSLT и расширение Visual Studio при помощи написания собственных XML дизайнеров.

Когда вы открываете XML файл в Visual Studio 2008 (например .xml, .xsd, .xslt, .svg или .config), вы запускаете встроенный редактор XML. XML редактор поставляется с полным набором функций который можно ожидать от редактора Visual Studio, включая IntelliSense, раскраску кода, подсветку скобок, сворачивание/разворачиваине и форматирование кода. Он предоставляет полную проверку синтаксиса XML 1.0, завершение тэгов, также как и поддержку схемы XML с валидацией в реальном времени.

Редактирование XML файлов

Нужно признать, что ручное редактирование XML-файлов может быть очень утомительным и отнимать много времени. Чтобы помочь в этом XML редактор Visual Studio 2008 поставляется с большим количеством функций для улучшения производительности. Одной из таких функций является расширяемая библиотека фрагментов XML кода — XML файлов которые содержат конфигурируемые участки кода, которые выступают в роли шаблонов для использования во время редактирования документа. С Visual Studio устанавливается много файлов фрагментов XML кода, которые помогают разработчикам при написании схем XML и стилевых страниц XSLT. Чтобы вызвать фрагмент во время редактирования XML-файла, выберите «Insert Snippet» («Вставить Фрагмент») из меню «Edit > IntelliSense» («Редактировать > IntelliSense»). Как только вы вставили фрагмент, вы можете перемещаться между подсвеченными полями, которые можно изменять клавишей TAB, чтобы вводить данные. На Рисунке 1 показан пример вставки фрагмента.

image

Рисунок 1: Вызов фрагмента XML кода в Visual Studio 2008.

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

Создайте XML файл и наберите в нем:
<snippet
Нажмите ESCAPE, чтобы закрыть окно IntelliSense.
Нажмите TAB.
Введите значение.
Нажмите ENTER для завершения.

Для более подробной информации Я рекомендую публикацию в блоге редактор Visual Studio
«Code Snippet — Schema Description».

Что вы будете делать, когда нету готовых фрагментов XML кода, а вам нужно создать XML файл основанный на существующей схеме? Редактор XML предлагает широкий диапазон возможностей при помощи которых вы можете ассоциировать ваши XML документы с XML схемами. IntelliSense основанные на схеме, валидацию в режиме реально времени, а также отчет об ошибках это всего несколько из них. В дополнение к названному, XML редактор может динамически генерировать фрагменты кода основанные на существующей схеме. После того как вы предоставили имя элемента который нужно добавить XML редактор может проанализировать схему на требующуюся информацию, сгенерировать фрагмент кода и вставить его для вас. Чтобы вызвать функции динамического построения фрагментов XML кода все что вам нужно сделать, набрать имя элемента также как это показано в следующем примере:

и нажмите клавишу TAB. XML редактор создаст фрагмент кода, который будет выглядеть очень похоже с тем, что уже было показано на Рисунке 1 за исключением того, что вам ничего не нужно будет делать заранее. Это очень мощная функция, особенно, когда вам нужно создать документы с большими моделями содержимого.

По умолчанию XML редактор генерирует только требующееся содержимое, но это поведение может быть переопределено при помощи аннотаций в XML схемах. Больше информации вы найдете в MSDN под заголовком, «How to: Generate an XML Snippet From an XML Schema».

Кеш схемы и каталоги Схем

Для продвинутых пользователей XML редактор предлагает такие функций как кеш схемы каталоги файлов схем. Кеш схемы это папка которая содержит множество хорошо известных W3C схем, также как и много схем конкретно созданных Microsoft или связанных с их технологиями. Она служит как репозиторий широко используемых схем, которые обычно не меняются. Вы найдете расположение схем по умолчанию в %vsinstalldir%\xml\schemas, где "%vsinstalldir%" это переменная представляющая расположение в которое установлена Visual Studio. Когда вы объявляете одно из пространств имен определенных этими схемами в ваших XML файлах, редактор будет автоматически ассоциировать соответствующие схемы из расположения кеша и быстро предоставлять IntelliSense и валидацию для этой схемы.

Каталог схем это XML файлы размещающиеся в директории кеша схем (файл catalog.xml по умолчанию). Они дают продвинутым пользователям более точный контроль над различными пространствами имен, которые они возможно будут использовать. Например, вы можете ассоциировать определенные пространства имен с внешними источниками:

<Schema
href="mylocation/myschema.xsd"
targetNamespace="http://myschema"/>

Вы также можете использовать файлы каталогов для создания ассоциаций между файлами схемы и расширениями файлов вам может быть это иногда полезно, когда схема не имеет targetNamespace:

<Association
extension="config"
schema="xml/schemas/dotNetConfig.xsd"/>

Нововведение в Visual Studio 2008, вы также можете добавлять условия:

<Association
extension="config"
schema="xml/schemas/dotNetConfig30.xsd"
condition="%TargetFrameworkVersion% = 3.0" />

Наконец, вы можете создать цепочку ссылаясь из одного файла каталога на другой:

Работа с большими файлами

Другая важная функция редактирования которую я хотел бы отметить это поддержка редактором XML больших файлов. Хотя вы и могли работать с большими файлами в предыдущих версиях, Visual Studio 2008 поддерживает инкрементальный анализ XML документов. Теперь, если вы работаете с файлом размером 10 Мб, вам не нужно ждать пока Visual Studio проанализирует файл целиком каждый раз как вы внесли изменения. XML редактор изолирует правки и переанализирует только те части которые требуется, предлагая таким образом лучшую производительность и отклик.

Я описал лишь несколько интересных функций XML редактора, но очевидно, нельзя рассмотреть здесь все из них. Таблица 1 показывает некоторые из функций которые доступны пользователям Visual Studio.

Функция
Поддержка в Visual Studio 2008

Автозавершение
X
Подсветка синтаксиса
X
Сворачивание/Разворачивание кода
X
IntelliSense
X
Расширяемая библиотека фрагментов кода
X
Динамические фрагменты кода
X
Переход к определению (из XML к XSD)
X
Навигация назад/вперед
X
Поддержка проекта и профиля пользователя
X
Валидация в режиме реального времени
X
Полная поддержка XSD
X
Поддержка пространств имен
X
Поддержка DTD
X
Генерация XSD по XML
X
Конвертация DTD в XSD
X
Поддержка Юникода
X
Поддержка больших файлов (10 Мб+)
X

Отладка стилевых таблиц XSLT

XSLT является стандартным языком трансформаций утвержденным W3C, который очень популярен среди большой группы разработчиков. Редакция Visual Studio Professional предоставляет поддержку редактирования и отладки стилевых таблиц XSLT. Редактирование файлов XSLT подобно редактированию XML файлов. Когда речь заходит об отладке XSLT, Visual Studio поддерживает два главных сценария:

Отладка отдельной трансформации, которая полезна, когда вашим изначальным интересом является документ на входе, собственно трансформация и документ на выходе.
Интегрированная в CLR отладка, которая полезна для отладки трансформаций в контексте вашего CLR приложения.

Отладка отдельных трансформаций

Рисунок 2 демонстрирует среду отладки, в момент когда вы работаете с XSLT трансформациями. В конфигурации по умолчанию, вы можете видеть XSLT файл и вкладки видов ввода документа и вывода документа. Вы также можете сконфигурировать Visual Studio, чтобы одновременно отображались все три документа. Когда вы проходите через код трансформации, вы можете видеть входящие данные, трансформацию которая обрабатывает этот ввод и генерацию выходного файла.

image

Рисунок 2: Отладка отдельных XSLT трансформаций.

CLR-интегрированная отладка

XslCompiledTransform xsltcmd =
new XslCompiledTransform( true );
xsltcmd.Load(XSLTFile);
XmlUrlResolver resolver = new XmlUrlResolver();
XmlWriter writer = XmlWriter.Create(OutputFile);

* This source code was highlighted with Source Code Highlighter .

Если вы установите точку останова на вызове метода и пройдете в него, отладчик покажет вам стилевую таблицу XSLT (Рисунок 3). Все функции описанные в разделе отладки отдельной таблицы стилей также применимы здесь. Единственным исключением является возможность устанавливать точки останова в файлах данных. Эта функция не доступна, когда вы переходите из в XSLT из другой программы на CLR. Все остальное будет вести себя точно также как описано в выше.

image

Таблица 2 представляет сводку различных функций доступных во время отладки XSLT трансформаций.

Feature

Visual Studio 2008 Support

Browser view
X
Locals, watch, call stack
X
Viewing input XML, output, and XLST during debugging
X
Breakpoints in XML
X
Breakpoints in XSLT
X
CLR language debugger integration
X

Расширение инструментов XML

image

Рисунок 4: Старый способ создания пользовательских XML дизайнеров поверх XML редактора.

С другой стороны в XML редакторе есть свой собственный анализатор с восстановлением после ошибок. Она также создает свое собственное дерево анализа представляющее содержимое буфера. В Visual Studio 2008, Microsoft открыла это дерево LINQ to XML сторонним разработчикам. Новая архитектура показана на Рисунке 5. Новое API позволяет разработчикам создавать пользовательские виды поверх дерева анализа XML редактора, предоставляющие им логику восстановления после ошибок XML редактора и дерево анализа LINQ to XML с транзакциями по обновлению, результаты выполнения которых появляются в буфере интегрированным Visual Studio UndoManager. Эти изменения облегчают разработчикам создание XML инструментов поверх Visual Studio 2008.

Я знаю, что делал это раньше, но сегодня это не работает, и я не могу найти нигде, объясняющего, как это сделать. Может быть, я недосыпаю, но я подозреваю гремлинов.

У меня есть XML-документ и каталог, полный XSD, которые его определяют. Как мне настроить Visual IDE так, чтобы он уведомлял меня об ошибках проверки, а затем предоставлял intellisense список допустимых тегов и атрибутов в данном контексте?

  • Я добавил XSD в проект вместе с XML-документом.
  • Я добавил XSD в список XML Schema (в пункте меню XML / Schemas . ).
  • Я даже включил атрибуты schemaLocation и noNamespaceSchemaLocation в XML-документ.

Visual Studio по-прежнему не отказывается от полезной информации для отладки или редактирования. Я пробовал и 2010, и 2008 (думал, что делал это раньше, в 2008 году)

Обновление: у меня был другой разработчик, который попробовал это, и он тоже не смог. Он знает, что проделал это с другими XML-документами и заставил это работать. Затем я загрузил редактор XML Oxygen, и он отлично работал с теми же файлами XML и XSD, поэтому файлы кажутся в порядке (или Oxygen более снисходительный / гибкий . )

Вам нужно будет связать XML-документ в Visual Studio с имеющимся у вас XSD-файлом.

В окне свойств XML-документа вы должны увидеть что-то вроде этого:

Свойства XML> Схема

В редакторе набора схем XML (открывается при нажатии на многоточие (. ) в текстовом поле «Схемы» в окне свойств) вам необходимо убедиться, что ваша схема присутствует. Кроме того, убедитесь, что Use столбец для этой схемы включен - если нет, щелкните по нему - вы получите раскрывающийся список параметров, выберите тот, Use который отмечен зеленой галочкой:

Селектор схемы XML

Убедитесь, что окна списка ошибок Visual Studio отображаются (меню «Просмотр»> «Список ошибок»). Это покажет все несоответствия между определениями схем XML и XSD.

Как только все это будет выполнено, редактор Visual Studio XML должен выделить проблемы с вашим XML в редакторе синими волнистыми линиями:

Проверять файл по XSD-схеме целесообрано в исключительных случаях, например, если скрипт xml-healer.py не справился с исправлением файла. Подробнее в главе IV. Скрипт для замены служебных символов в XML .

XMLPad уступает по удобству и возможностям MS Visual Studio, но если вы не являетесь программистом и у вас не установлена MS Visual Studio, лучше воспользоваться XMLPad.

Проверка по XSD-схеме в XMLPad¶

  1. Откройте XML-файл, который требуется проверить в XMLPad File > Open.


  1. Чтобы проверить файл по заданной XSD-схеме, его надо с ней ассоциировать. Перейдите в меню XML > Assign Schema/DTD.


  1. Выберите W3C Schema и нажмите Browse, затем выберите XSD-схему для проверки.



  1. После того, как XSD-схема ассоциирована, нажмите F7 или XML > Validate, чтобы проверить файл. В нижней части окна будут выведены ошибки, нажав на которые можно подсветить строку, в которой они находятся.


Для удобства отображения можно включить переносы строк Edit > Word Wrap.

Проверка по XSD-схеме в MS Visual Studio¶

  1. Откройте XML-файл, который требуется проверить в MS Visual Studio Файл > Открыть > Файл.


  1. Чтобы проверить файл по заданной XSD-схеме, его надо с ней ассоциировать. Перейдите в меню XML-код > Схемы. .



Проверка на соответсвие XSD-схеме будет осуществляться автоматически на лету. Внизу в окне Списка ошибок будет отображаться список ошибок. При нажатии на ошибку, она будет подсвечена в редакторе.

Добавить окно Списка ошибок можно через Вид > Списка ошибок.

Читайте также: