Я разрабатываю клиентскую программу WPF для некоторых веб-сайтов. Он использует базу данных XML. Я новичок в XML. Кто-нибудь, пожалуйста, объясните, как создавать, добавлять (самое главное), редактировать, читать & шифровать XML-файл. Это большой вопрос, я знаю. Но, это срочно. Завершите работу как можно скорее. Поиск в Интернете, не получения правильной информации.База данных XML в C# .net
ответ
Загрузите XML как XMLDocument.
(в ответ на ваш комментарий на ответ GERRI в)
XML изначально не appendable. Для действительного XML-документа требуется один элемент документа. Чтобы «добавить», вы должны иметь возможность вернуться к закрывающему тегу элемента документа и перезаписать его. Единственный вариант - прочитать весь документ и снова записать его обратно. Также вы можете использовать XmlDocument или XDocument вместо XmlWriter, который является ужасно болезненным API, когда вам не нужен очень тонкий контроль над поведением.
Дело в том, что XML делает действительно страшный формат базы данных. Там есть другие облегченные решения для баз данных, которые не требуют сервера базы данных.
На самом деле утверждение «он использует базу данных XML» показывает, что плакат не знает, что, по-видимому, должна делать база данных. Файл не является атабазом любыми способами, если там не существует большой поддержки. И, как вы сказали, XML делает действительно дрянной формат базы данных;) – TomTom
Да, я просто упомянул еще одну причину, почему он не должен использовать XML ... Примерно раз в неделю или две, Цзин (полезное приложение тем не менее) будет жаловаться на то, что его файл конфигурации поврежден. Вероятно, это небольшой барабан в нижней части файла, который делает его неправильным. Но угадайте, что ... потому что это неправда XML, он шьет весь файл. Разве это не было бы здорово, если бы это произошло на 73% в 40-мегабайтный файл? – Josh
Вы должны серьезно рассмотреть возможность использования DataSet в своем приложении и загрузить свои данные из файла XML через DataSet,ReadXml. Когда вы закончите с вашими обновлениями, напишите свои изменения, используя DataSet.WriteXml.
Но вы также должны серьезно рассмотреть возможность использования XML в качестве базы данных.
Вот статья на CodeProject, что обсуждается использование XML в качестве базы данных:
Xml Database Demo
Я знаю, что помечено на этот вопрос C#, но, к сожалению, демо-приложение написано в VB.NET.
Я совсем не уполномочен менять это решение на использование XML DB.But, я никогда не буду выбирать его в будущем. – user316187
Есть ли какая-нибудь полезная ссылка, которая объясняет операции XML с использованием Dataset? – user316187
Не было бы никаких XML-операций с использованием DataSet. Данные считываются в DataSet из вашего XML-файла, как только в DataSet выполняются операции DataSet с данными; DataSet не знает или не заботится о своих данных, полученных из XML. Когда все будет готово, напишите DataSet обратно в XML с помощью DataSet.WriteXml. –
Предполагая, что ваша база данных достаточно мала, чтобы ее можно было легко загрузить в память.
Создайте классы, которые моделируют вашу базу данных.
Добавить DataContract
атрибуты к ним, чтобы указать, как вы хотите их сериализовать.
Используйте DataContractSerializer
для сериализации базы данных в XML и сохранения ее на диск.
Каждый раз при обновлении базы данных:
- Создать новый файл как .tmp
- Удалять старый файл с именем .old
- Rename .xml в .old
- Переименовать новый файл. TMP в .xml
Когда вы идете, чтобы загрузить файл, если .xml поврежден или отсутствует, попробуйте .tmp
Это поможет вам пережить неизбежное повреждение, которое произойдет во время написания, когда что-то пойдет не так.
Из-за истории каждой компании с базой данных, имеющей «стандартный» интерфейс, который не следует ни одной другой компании, XML стал дефактовым способом передачи данных между базами данных.
Если это предназначено для использования, это нормально, так как он должен писать в этом формате несколько раз. Существует много проблем, связанных с написанием XML с использованием .NET, поскольку у него есть много способов забыть закончить запись, оставляя открытые теги (всегда используйте использование/flush/close). Предупреждение: чем больше процессорных ядер, тем чаще. Используйте Thread.BeginCriticalRegion()/Thread.EndCriticalRegion(), если у вас более четырех реальных ядер. Также, как было предложено, лучше сохранить более раннюю версию как .bak или таковую.
Конечно, если стандарты XML могут иметь декларацию «набор документов», мы могли бы каждый день добавлять документ, а жизнь была бы намного проще.
Я использую writestartelement, writestring и writeendelement для записи информации о пользователе в xml-файл. Но я не могу добавить новую информацию о пользователе. Можете ли вы помочь? – user316187