База данных XML в C # .net - PullRequest
       1

База данных XML в C # .net

2 голосов
/ 14 апреля 2010

Я разрабатываю клиентскую программу WPF для некоторых веб-сайтов. Он использует базу данных XML. Я новичок в XML. Кто-нибудь, пожалуйста, объясните, как создавать, добавлять (самое главное), редактировать, читать и шифровать XML-файл. Это большой вопрос, я знаю. Но это срочно. Нужно завершить работу как можно скорее. Поиск в интернете, получение неверной информации.

Ответы [ 5 ]

6 голосов
/ 14 апреля 2010

Вы должны серьезно подумать об использовании DataSet в своем приложении и загрузить свои данные из файла XML через DataSet, ReadXml . Когда вы закончите с вашими обновлениями, напишите свои изменения, используя DataSet.WriteXml .

Но вы также должны серьезно подумать о том, чтобы не использовать XML в качестве базы данных.

Вот статья о CodeProject, в которой обсуждается использование XML в качестве базы данных:
Демонстрация базы данных Xml

Я знаю, что вы пометили этот вопрос C #, но, к сожалению, демонстрационное приложение написано на VB.NET.

3 голосов
/ 14 апреля 2010

(в ответ на ваш комментарий к ответу Джерри)

XML по сути не добавляется. Для правильного XML-документа требуется один элемент документа. Чтобы «добавить», вам нужно будет иметь возможность вернуться к закрывающему тегу элемента документа и перезаписать его. Единственный вариант - прочитать весь документ и записать его снова. Также вы можете захотеть использовать XmlDocument или XDocument вместо XmlWriter, который является ужасно болезненным API, когда вам не требуется очень детальный контроль над поведением.

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

1 голос
/ 09 мая 2011

Из-за истории создания каждой компанией, работающей с базами данных, «стандартного» интерфейса, которому не следует ни одна другая компания, XML стал дефактным способом передачи данных между базами данных.

Если это для использования по назначению, то это нормально, так как он должен записывать в этом формате только несколько раз. При написании XML с использованием .NET есть много поводов для беспокойства, поскольку есть множество способов забыть завершить запись, оставляя открытые теги (всегда используйте / flush / close). Предупреждение: чем больше процессорных ядер, тем чаще .Net облажается. Используйте Thread.BeginCriticalRegion () / Thread.EndCriticalRegion (), если у вас более четырех реальных ядер. Также, как предложено, лучше сохранить более раннюю версию в формате .bak или тому подобное.

Конечно, если бы у стандартов XML могла быть декларация "набора документов", тогда мы могли бы добавлять документ каждый раз, и жизнь была бы намного проще.

0 голосов
/ 14 апреля 2010

Если ваша база данных достаточно мала, чтобы вы могли легко загрузить ее в память.

Создание классов, которые моделируют вашу базу данных.

Добавьте атрибуты DataContract к ним, чтобы указать, как вы хотите, чтобы они сериализовались.

Используйте DataContractSerializer для сериализации вашей базы данных в XML, а затем сохраните ее на диск.

Каждый раз, когда вы обновляете базу данных:

  1. Создать новый файл как .tmp
  2. Удалить любой старый файл с именем .old
  3. Переименовать .xml в .old
  4. Переименовать новый файл из .tmp в .xml

Если вы хотите загрузить файл, если .xml поврежден или отсутствует, попробуйте .tmp

Это поможет вам пережить неизбежное искажение, которое произойдет во время записи, когда что-то пойдет не так.

0 голосов
/ 14 апреля 2010

Загрузите ваш XML как XMLDocument .

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