XML для LINQ Вопрос / ы
Прямо перед тем, как я начну, вот небольшой обзор того, чего я пытаюсь достичь, а затем мы перейдем к мрачным деталям. В настоящее время я разрабатываю приложение, которое будет отслеживать реестр пользователей на предмет изменений в конкретных ключах, которые относятся к предпочтениям пользователя. В настоящее время используются обязательные профили (не мой выбор), в любом случае вся идея состоит в том, чтобы записать изменения в месте, где они могут быть записаны обратно в реестр пользователей при следующем входе в систему.
На данный момент у меня есть системный мониторинг изменений реестра и запуска событий, возвращающий ключ, имя значения и значение, которые изменились. Я вводил их в список, чтобы создать единую строку, содержащую все данные, а затем записывал этот список в текстовый файл очень часто. Теперь все это было хорошо, но мне нужно изменить способ хранения данных, так как разбиение строк на ключ, имя значения и значение снова для обратной записи в реестр требует слишком много накладных расходов, а также возникают проблемы с разбивкой строк в однозначно идентифицируемую мода.
Поэтому мне предложили взглянуть на XML, который я раньше не использовал, и я начал исследовать его, и все это выглядит достаточно просто, я также использовал LINQ, прежде чем подключаться к встроенным базам данных. В настоящее время я пытаюсь понять, как LINQ может извлекать данные в памяти и манипулировать ими из XML, поскольку я не хочу постоянно получать доступ к XML-файлу из-за необходимости поддерживать приложение как можно быстрее. насколько это возможно. В настоящее время все изменения в реестре кэшируются в список (строку), а затем записываются в текстовый файл каждую минуту или около того.
На данный момент у меня есть система, возвращающая ключ, имя значения и значение в разных строках, объединяя их в одно значение List(String), где мне понадобится таблица или эквивалент, представляющий ключ, который содержит несколько имен значений, каждое из которых содержит одно значение и, наконец, тип (это будет число, представляющее тип реестра, REG SZ, REG BINARY и т. д.). И в файле XML, и в самой программе.
Кроме того, я не совсем понимаю, в отличие от базы данных таблиц, и там схемы не будут существовать, пока программа не запустится, поскольку она создаст новый XML-файл, а не уже существующий. Это связано с тем, что информация записывается обратно на личный диск пользователя, поэтому ее необходимо создавать при первом запуске на компьютере пользователя.
Я перепробовал несколько ссылок, учебных пособий и т. Д., Но пока ничего не щелкнуло, так что, если у вас есть пример или, может быть, он мне немного лучше объяснит, это будет оценено.
Еще один последний момент, который я хочу добавить, заключается в том, что моя текущая идея для хранения данных в программе - создать список значений, встроенный в список имен значений и список имен значений, встроенных в список ключей. Это звучит нормально?
Теперь я знаю, что это долго и довольно повсеместно, поэтому, если кто-то может помочь, это будет оценено, или если вам потребуется дополнительная информация о разъяснениях, пожалуйста, дайте мне знать, и я буду стараться изо всех сил.
Спасибо
2 ответа
Из того, что я понимаю, вы просто думаете в неправильном направлении. Ваше приложение не хочет манипулировать XML в памяти. Вы просто хотите работать с некоторой структурой данных в памяти и хотели бы иметь простой способ сохранить ее на диск и прочитать обратно? Если я правильно понимаю
Не волнует LINQ для XML. Просто взгляните на встроенную инфраструктуру XML-сериализации. Затем создайте внутреннюю структуру данных, которая соответствует потребностям ваших приложений, и используйте XmlSerializer, чтобы записать его на диск и прочитать обратно. Не нужно трогать любой XML вручную!
Из того, что вы описываете, неплохо использовать здесь XML.
Что касается доступа к XML dta в памяти, я нашел документацию MSDN весьма полезной:
http://msdn.microsoft.com/en-us/library/bb387098.aspx
Основная идея заключается в том, что LINQ-to-XML - это просто LINQ-to-Objects, работающий с объектами, представляющими элементы XML.
Боюсь, я не совсем понял ваш второй вопрос.