Я полностью согласен с упоминанием о C# для графического программирования. Это имеет небольшой недостаток того, чтобы быть управляемым языком, и разрешение полной свободы сборщика "мусора" по Вашему приложению является framerate самоубийством через некоторое время, но с некоторыми относительно интеллектуальными выделениями пула, сделанными рано в сроке действия программы можно избежать любых реальных проблем.
Несколько человек уже упомянули XNA, которая является невероятно дружественной и хорошо зарегистрирована, и я хотел бы повторить ту рекомендацию также. Я лично использую его для своих игровых проектов хобби, и это рассматривало меня очень хорошо.
XNA не является единственной альтернативой, все же. Существует также SlimDX, который находится в процессе постоянного развития как средство обеспечения минимизированной обертки DirectX подобным способом как Управляемый DirectX (который был, я верю, прекращенный Microsoft в пользу XNA). Оба достойны исследования: http://code.google.com/p/slimdx/
http://www.stylusstudio.com/dtd_generator.html - фактическое программное обеспечение, реализующее генератор DTD.
http://www.pmg.csail.mit.edu /~chmoh/pubs/wecwis.pdf кажется хорошей статьей о том, что вам может понадобиться, но я пока не могу найти (ссылки на) настоящий код где-либо в документе.
Вот это другая статья по этому поводу, опять же, кода не найдено: http://www.softnet.tuc.gr/~minos/Papers/debull03.pdf .
Наконец, я бы также предложил вместо этого вы изучаете использование RELAX NG или Schematron для проверки вашего XML. Эти языки намного более выразительны, что упрощает их чтение и дает больше возможностей для проверки. (Обязательно пропустите XML-схему, которая считается беспорядочной.)
Разбивка
Func
: делегат, который вернет ключ для данного элемента в коллекции. Эта функция, по сути, является функцией сортировки. Таким образом, ему нужен способ сравнения элементов в коллекции. Этот конкретный метод предполагает, что для данного объекта существует соответствующее значение ключа, по которому они могут быть отсортированы.
Возьмем, к примеру, следующий класс Student
class Student {
string Name { get; set; }
...
}
Если бы я хотел отсортировать коллекцию экземпляров Student
по их имени, я мог бы сделать следующее
IEnumerable<Student> col = GetTheStudents();
var ordered = col.OrderByDescending( x => x.Name );
В этом случае значения будут следующими
Student
String
Func
: XMLSpy Altova имеет генератор схемы DTD / XML.
Сгенерированная схема DTD / XML обычно требует небольшой настройки. Например, инструмент может перечислить список атрибутов или элементов, когда вы «имели в виду» для него разрешить любое значение. Вы даете ему лишь образец вашего проблемного пространства, и, тем не менее, он должен перейти от конкретного к общему. По этой причине я не теряю форму, когда он не может читать мои мысли.
Я считаю сгенерированный dtd или схему отправной точкой. Это лучше, чем раскатывать вручную с нуля. Эээ, если вы начинаете с существующих XML-документов, то есть.
Даже если вы не собираетесь использовать сгенерированный dtd, это довольно хороший способ разобраться в структуре набора незнакомых XML-документов. .
Редактор XMLMax создаст XSD из файла XML. Бесплатная пробная версия (без регистрации / небольшого файла для загрузки) сделает это за вас. Если вы хотите сделать это в коде, .NET framework имеет класс XmlSchemaInference, который автоматически создает XSD из XML-файла.