Форум программистов, компьютерный форум CyberForum.ru

Как создать XML файл стандартными средствами - C++

Восстановить пароль Регистрация
 
Castello2401
9 / 9 / 1
Регистрация: 06.03.2012
Сообщений: 182
Завершенные тесты: 1
27.12.2012, 11:12     Как создать XML файл стандартными средствами #1
Как стандартными средствами записывать информацию в XML файл? Для начала не хочу пользоваться сторонними плагинами. К примеру как создать такой файл:

XML
1
2
3
4
5
6
7
8
<ObjectLayer>
 <Layer Name="MyLayer" Expanded="0" IsDefaultColor="1">
  <LayerObjects>
   <Object Type="Brush" Layer="MyLayer" Name="ObjName" Pos="X,Y,Z"/>
   <Object Type="Brush" Layer="MyLayer" Name="ObjName" Pos="X,Y,Z"/>
  </LayerObjects>
 </Layer>
</ObjectLayer>
где MyLayer, ObjName, X,Y,Z - переменные
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
27.12.2012, 11:14     Как создать XML файл стандартными средствами #2
Castello2401, стандартных средств для XML в С++ нет.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
27.12.2012, 11:18     Как создать XML файл стандартными средствами #3
Цитата Сообщение от Castello2401 Посмотреть сообщение
Как стандартными средствами записывать информацию в XML файл? Для начала не хочу пользоваться сторонними плагинами.
Написать свой парсер
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
27.12.2012, 11:19     Как создать XML файл стандартными средствами #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Написать свой парсер
Парсер от слова parse - разбирать, что тут нужно разбирать?
Castello2401
9 / 9 / 1
Регистрация: 06.03.2012
Сообщений: 182
Завершенные тесты: 1
27.12.2012, 11:26  [ТС]     Как создать XML файл стандартными средствами #5
жаль...
Какой посоветуете плагин для создания XML документов? Желательно небольшой и понятный
И пожалуйста объясните на примере как его подключить и с помощью него создать выше приведенный XML файл.
Еще такой вопрос возник - как реализована работа с XML в крупных коммерческих программах? Какими плагинами они пользуются?
Dmitriy_M
1295 / 1176 / 105
Регистрация: 20.03.2009
Сообщений: 4,211
Записей в блоге: 11
27.12.2012, 11:38     Как создать XML файл стандартными средствами #6
Цитата Сообщение от Castello2401 Посмотреть сообщение
К примеру как создать такой файл:
Что сложного в генерации XML?
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
27.12.2012, 11:41     Как создать XML файл стандартными средствами #7
В Poco есть модуль для работы с XML

Информация о проекте: ru.wikipedia.org/wiki/POCO
Скачать: pocoproject.org
Лицензия : Boost Software License
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.12.2012, 12:04     Как создать XML файл стандартными средствами #8
Как вариант, можно взять TinyXml2, если не хочется тащить poco: http://grinninglizard.com/tinyxml2docs/index.html
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
27.12.2012, 12:04     Как создать XML файл стандартными средствами #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
 
#include <Poco/DOM/AutoPtr.h>
#include <Poco/DOM/Attr.h>
#include <Poco/DOM/Document.h>
#include <Poco/DOM/DOMWriter.h>
#include <Poco/XML/XMLWriter.h>
 
using namespace std;
using namespace Poco::XML;
 
int main()
{
    AutoPtr<Document> document = new Document;
    AutoPtr<Element> root = document->createElement("ObjectLayer");
    document->appendChild(root);
    AutoPtr<Element> layer = document->createElement("Layer");
    root->appendChild(layer);
    AutoPtr<Attr> nameLayer = document->createAttribute("Name");
    nameLayer->setNodeValue("MyLayer");
    layer->setAttributeNode(nameLayer);
    AutoPtr<Attr> expandedAttr = document->createAttribute("Expanded");
    expandedAttr->setNodeValue("0");
    layer->setAttributeNode(expandedAttr);
    AutoPtr<Attr> isDefaultColorAttr = document->createAttribute("IsDefaultColor");
    isDefaultColorAttr->setNodeValue("1");
    layer->setAttributeNode(isDefaultColorAttr);
    AutoPtr<Element> layerObjects = document->createElement("LayerObjects");
    layer->appendChild(layerObjects);
    for(int i = 0; i < 2; i++)
    {
        AutoPtr<Element> obj = document->createElement("Object");
        layerObjects->appendChild(obj);
        AutoPtr<Attr> type = document->createAttribute("Type");
        type->setNodeValue("Brush");
        obj->setAttributeNode(type);
        AutoPtr<Attr> layerAttr = document->createAttribute("Layer");
        layerAttr->setNodeValue("MyLayer");
        obj->setAttributeNode(layerAttr);
        AutoPtr<Attr> nameAttr = document->createAttribute("Name");
        nameAttr->setNodeValue("ObjName");
        obj->setAttributeNode(nameAttr);
        AutoPtr<Attr> positionAttr = document->createAttribute("Pos");
        positionAttr->setNodeValue("X,Y,Z");
        obj->setAttributeNode(positionAttr);
    }
    DOMWriter domWriter;
    domWriter.setNewLine("\n");
    domWriter.setOptions(XMLWriter::PRETTY_PRINT);
    domWriter.writeNode(std::cout, document);
    return 0;
}
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
27.12.2012, 14:39     Как создать XML файл стандартными средствами #10
RapidXML
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
#include <rapidxml.hpp>
#include <rapidxml_print.hpp>
 
 
int main() {
   rapidxml::xml_document<> document;
 
   rapidxml::xml_node<> * objectLayer = document.allocate_node(rapidxml::node_element, "ObjectLayer");
   document.append_node(objectLayer);
 
   rapidxml::xml_node<> * layer = document.allocate_node(rapidxml::node_element, "Layer");
   layer->append_attribute(document.allocate_attribute("Name",           "MyLayer"));
   layer->append_attribute(document.allocate_attribute("Expanded",       "0"));
   layer->append_attribute(document.allocate_attribute("IsDefaultColor", "1"));
   objectLayer->append_node(layer);
 
   rapidxml::xml_node<> * layerObjects = document.allocate_node(rapidxml::node_element, "LayerObjects");
   layer->append_node(layerObjects);
 
   rapidxml::xml_node<> * object = document.allocate_node(rapidxml::node_element, "Object");
   object->append_attribute(document.allocate_attribute("Type",    "Brush"));
   object->append_attribute(document.allocate_attribute("Layer",   "MyLayer"));
   object->append_attribute(document.allocate_attribute("Pos",     "X,Y,Z"));
   layerObjects->append_node(object);
   layerObjects->append_node(document.clone_node(object));
 
   std::cout << document << std::endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 18:21     Как создать XML файл стандартными средствами
Еще ссылки по теме:

Как записывать в txt-файл определенные строки из xml-файлов? C++
C++ Как правильно распарсить xml-файл?
C++ Ввод без ожидания стандартными средствами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,629
Записей в блоге: 17
27.12.2012, 18:21     Как создать XML файл стандартными средствами #11
Есть такая книга "Сборник рецептов С++" Глава 14,стр 523 там есть примеры работы с либами для XML
Миниатюры
Как создать XML файл стандартными средствами  
Yandex
Объявления
27.12.2012, 18:21     Как создать XML файл стандартными средствами
Ответ Создать тему
Опции темы

Текущее время: 08:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru