2009-11-05 2 views
1

Перед тем, как я начну с малого обзора того, чего я пытаюсь достичь, а затем мы перейдем к деталям. В настоящее время я разрабатываю приложение, которое будет контролировать реестр пользователей для изменения определенных ключей, которые относятся к пользовательским настройкам. В настоящее время мы используем обязательные профили (не мой выбор), в любом случае вся идея состоит в том, чтобы записывать изменения в место, где они могут быть загружены обратно в реестр пользователей при следующем входе в систему.XML to LINQ Question/s

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

Поэтому мне было предложено посмотреть на XML, который я раньше не использовал, и я начал его исследовать, и все это выглядит достаточно просто, я также использовал LINQ перед подключением к встроенным базам данных. В настоящее время я изо всех сил пытаюсь понять, как LINQ может извлекать и обрабатывать данные в памяти из XML, так как я не хочу постоянно обращаться к XML-файлу из-за необходимости быстро сохранять приложение насколько это возможно. В настоящее время все изменения реестра записываются в список (String), а затем записываются в текстовый файл каждую минуту или около того.

В настоящее время у меня есть система, возвращающая ключ, имя и значение значения в разных строках, конвергируя их в одно значение List (String), где в качестве то, что мне понадобится, является таблица или эквивалент, представляющий ключ, который содержит несколько имен значений с каждым именем значения, содержащим одно значение, и, наконец, тип (это будет число, представляющее, что такое значение реестра, REG SZ, REG BINARY и т. д.). И в файле XML, и в программе он сам.

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

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

Только один последний бит, который я хочу добавить, заключается в том, что моя текущая идея хранения данных в программе - создать список значений, встроенный в список имен значений и список имен значений, встроенных в список ключей , Это звучит нормально?

Теперь я знаю, что это длинное и некоего рода, поэтому, если кто-то может помочь, это будет оценено, или если вам потребуется дополнительная информация о разъяснении, пожалуйста, дайте мне знать, и я постараюсь изо всех сил.

Благодаря

ответ

1

Насколько я понимаю, вы просто думаете не в том направлении. Ваше приложение не хочет манипулировать XML в памяти. Вы просто хотите работать с некоторой структурой данных в памяти и хотели бы иметь простой способ сохранить его на диске и прочитать его обратно? Если я так понимаю:

Не заботьтесь о LINQ для XML. Просто взгляните на сборку XML-инфраструктуры сериализации. Затем создайте внутреннюю структуру данных, которая соответствует потребностям ваших приложений, и используйте XmlSerializer, чтобы записать ее на диск и прочитать ее. Не нужно касаться каких-либо XML вручную!

+0

В принципе да, верно, я хочу манипулировать данными в памяти, а затем иметь магазин, на который будет записываться и читать. См. Я использую LINQ в SQL, где у меня есть существующее хранилище данных, и использую набор данных и т. Д. – manemawanna

+0

Вы должны забыть идею использования XML в памяти. См. Http://www.switchonthecode.com/tutorials/csharp-tutorial-xml-serialization для примера, чтобы понять, как работает сериализация XML. – Achim

1

Из того, что вы описали это кажется хорошей идеей использовать XML здесь.

Что касается доступа к XML-ДТА в памяти, я нашел в документации MSDN весьма полезным:
http://msdn.microsoft.com/en-us/library/bb387098.aspx

Основная идея заключается в том, LINQ к XML является только LINQ к объектам, работая с объектами, представляют элементы XML.

Боюсь, я не совсем понимаю ваш второй вопрос.

+0

У вас все в порядке, все, что мне нужно знать о XML, я уже прочитал большую часть документации, но я попробую еще раз посмотреть, могу ли я на этот раз улучшить свою голову, теперь, когда я поспал. – manemawanna