2010-04-14 3 views
2

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

ответ

0

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

+0

Я использую writestartelement, writestring и writeendelement для записи информации о пользователе в xml-файл. Но я не могу добавить новую информацию о пользователе. Можете ли вы помочь? – user316187

3

(в ответ на ваш комментарий на ответ GERRI в)

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

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

+0

На самом деле утверждение «он использует базу данных XML» показывает, что плакат не знает, что, по-видимому, должна делать база данных. Файл не является атабазом любыми способами, если там не существует большой поддержки. И, как вы сказали, XML делает действительно дрянной формат базы данных;) – TomTom

+0

Да, я просто упомянул еще одну причину, почему он не должен использовать XML ... Примерно раз в неделю или две, Цзин (полезное приложение тем не менее) будет жаловаться на то, что его файл конфигурации поврежден. Вероятно, это небольшой барабан в нижней части файла, который делает его неправильным. Но угадайте, что ... потому что это неправда XML, он шьет весь файл. Разве это не было бы здорово, если бы это произошло на 73% в 40-мегабайтный файл? – Josh

6

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

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

Вот статья на CodeProject, что обсуждается использование XML в качестве базы данных:
Xml Database Demo

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

+0

Я совсем не уполномочен менять это решение на использование XML DB.But, я никогда не буду выбирать его в будущем. – user316187

+0

Есть ли какая-нибудь полезная ссылка, которая объясняет операции XML с использованием Dataset? – user316187

+0

Не было бы никаких XML-операций с использованием DataSet. Данные считываются в DataSet из вашего XML-файла, как только в DataSet выполняются операции DataSet с данными; DataSet не знает или не заботится о своих данных, полученных из XML. Когда все будет готово, напишите DataSet обратно в XML с помощью DataSet.WriteXml. –

0

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

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

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

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

Каждый раз при обновлении базы данных:

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

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

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

1

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

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

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