Как лучше всего сохранить файлы XML
У меня есть куча классов, каждый из которых читает по своим значениям из XML-файла, используя TinyXML.
Я сделал это, чтобы все было в памяти, и мой пользователь использует приложение и вносит изменения. Если пользователь нажимает кнопку Сохранить, мне нужно пройтись по моим объектам и вызвать функцию Save(), которая записывает файл XML. Должен ли я перестроить файл XML программно с нуля и записать его? Или я должен использовать то же самое TiXmlHandle
что я использовал, чтобы прочитать файл, изменить его, а затем записать его обратно? Таким образом, оригинальный порядок сохраняется. Если я воссоздаю XML, то порядок оригинала будет изменен.
Я хочу, чтобы пользователь мог изменять XML вручную, поэтому я думаю, что было бы целесообразно изменить его вручную, только чтобы он был перетасован при сохранении. Я правильно понимаю мои варианты?
Никогда раньше не использовал TinyXML или XML.
2 ответа
Я бы избавился от ручек чтения, как только вы прочитаете ввод XML.
Чтобы выписать их обратно, вы обычно должны иметь метод writeXML() в родительском или основном объекте типа документа, а затем вызывать метод writeXML() в каждом объекте вашего проекта.
пс. Нет ничего необычного в том, чтобы иметь разные библиотеки чтения и записи XML.
имп. если вас беспокоит порядок в документе XMl, который вы не можете навязать в своей иерархии объектов - у вас неправильный дизайн основы.
Эта первая часть не является прямым ответом на ваш вопрос, но я продолжу ваше предложение: "Я никогда раньше не использовал XML". Из-за распространенности XML в вычислительной технике сегодня стоит потратить некоторое время, чтобы понять, как работает XML. Для прямой ссылки я рекомендую "XML в двух словах" от Гарольда и Минса. Он объясняет XML, схемы (которые точно определяют, как должен выглядеть входящий XML), XPath (как вы перемещаетесь по узлам для получения нужных данных), XQuery, XSLT, пространства имен и т. Д.
Что действительно поможет вам, так это концепции, и для этого вам может понадобиться другая книга (извините, я не могу ее порекомендовать). Важно знать, почему вы должны использовать XML правильно, а не просто думайте об этом как о прославленном файле.INI. Почему концепция DOM распространена. Нужно ли вам использовать SAX.
Вероятно, наиболее важные вещи для изучения - это XML-схемы (XSD). Хотя иногда это кажется излишним, вам настоятельно рекомендуется проверить ваш XML на соответствие его схеме (которая представляет собой вызов одного метода для полного синтаксического анализатора XML, такого как xerces). Помните, что это 2009 год, ваша программа работает на компьютере с много памяти, и она может делать большинство таких вещей действительно, очень быстро; поэтому стоит знать, что ваши данные хороши. И как только вы поймете схемы, я бы порекомендовал научиться их версиям. Это особенно важно при работе с хранилищем программ, поскольку вы можете заставить свои программы понимать предыдущие версии сохраненных файлов и автоматически использовать или обновлять их.
Чтобы более прямо ответить на ваш ближайший вопрос, используйте TinyXML (или любой другой парсер, который вы выберете) для написания. Не изобретайте выходное колесо, когда у вас уже есть инструмент.