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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Castello2401
9 / 9 / 1
Регистрация: 06.03.2012
Сообщений: 182
Завершенные тесты: 1
#1

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

27.12.2012, 11:12. Просмотров 1069. Ответов 10
Метки нет (Все метки)

Как стандартными средствами записывать информацию в 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 - переменные
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 11:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как создать XML файл стандартными средствами (C++):

Считать посимвольно файл стандартными средствами и итераторами - C++
Необходимо прочитать файл в котором находится мусор, из файла требуются только определенные символы (сам сделаю) и поместить это в...

Как воспроизвести mp3 и другие звуковые файлы стандартными средствами Windows? - C++
...с помощью стандартных средств Windows.

Простейший текстовый редактор стандартными средствами c++ - C++
Доброго времени суток. Есть задание написать простейший графический редактор. Наподобие блокнота в wnidows. Сделать его в визуальных средах...

Ввод без ожидания стандартными средствами - C++
Здравствуйте. Делаю консольный тетрис в образовательных целях. Необходимо сделать ввод, чтобы я мог управлять падающей фигурой, но тут я...

Изменение размера bmp стандартными средствами c++ - C++
Доброго времени суток, форумчане. Интересует такой вопрос: есть изображение bmp с глубиной 24 бита. Требуется провести децимацию: вырезать...

Как перевести средствами MFS файл из Dosкодировки в Виндушную - C++
Подскажите как перевести файл с текстовой инфой из кодировки Dos в кодировку винды. Прога написана в MFS. Спасибо!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
27.12.2012, 11:14 #2
Castello2401, стандартных средств для XML в С++ нет.
0
Croessmah
Эксперт CЭксперт С++
13205 / 7476 / 839
Регистрация: 27.09.2012
Сообщений: 18,380
Записей в блоге: 3
Завершенные тесты: 1
27.12.2012, 11:18 #3
Цитата Сообщение от Castello2401 Посмотреть сообщение
Как стандартными средствами записывать информацию в XML файл? Для начала не хочу пользоваться сторонними плагинами.
Написать свой парсер
0
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
27.12.2012, 11:19 #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Написать свой парсер
Парсер от слова parse - разбирать, что тут нужно разбирать?
0
Castello2401
9 / 9 / 1
Регистрация: 06.03.2012
Сообщений: 182
Завершенные тесты: 1
27.12.2012, 11:26  [ТС] #5
жаль...
Какой посоветуете плагин для создания XML документов? Желательно небольшой и понятный
И пожалуйста объясните на примере как его подключить и с помощью него создать выше приведенный XML файл.
Еще такой вопрос возник - как реализована работа с XML в крупных коммерческих программах? Какими плагинами они пользуются?
0
Dmitriy_M
1349 / 1230 / 114
Регистрация: 20.03.2009
Сообщений: 4,420
Записей в блоге: 11
27.12.2012, 11:38 #6
Цитата Сообщение от Castello2401 Посмотреть сообщение
К примеру как создать такой файл:
Что сложного в генерации XML?
0
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
27.12.2012, 11:41 #7
В Poco есть модуль для работы с XML

Информация о проекте: ru.wikipedia.org/wiki/POCO
Скачать: pocoproject.org
Лицензия : Boost Software License
0
0x10
2463 / 1635 / 238
Регистрация: 24.11.2012
Сообщений: 4,026
27.12.2012, 12:04 #8
Как вариант, можно взять TinyXml2, если не хочется тащить poco: http://grinninglizard.com/tinyxml2docs/index.html
0
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
27.12.2012, 12:04 #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;
}
2
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
27.12.2012, 14:39 #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;
}
0
Avazart
Эксперт С++
7185 / 5359 / 280
Регистрация: 10.12.2010
Сообщений: 23,654
Записей в блоге: 17
27.12.2012, 18:21 #11
Есть такая книга "Сборник рецептов С++" Глава 14,стр 523 там есть примеры работы с либами для XML
0
Миниатюры
Как создать XML файл стандартными средствами  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 18:21
Привет! Вот еще темы с ответами:

Учу C++, пошел уже третий год, но я так и не знаю, как средствами стандартного C++ удалить файл - C++
В общем, проблема такая: Я уже знаю по C++ очень много, но есть пробелы, например, я знаю, как создать файловый вывод, двоичный файл, как...

Как правильно распарсить xml-файл? - C++
Не могу понять, какие нужно вставить регулярные выражения, все время происходит сбой. #include &quot;stdafx.h&quot; #include &lt;regex&gt; #include...

Подскажите, нужно перегрузить оператор или создать метод(если создать то не понимаю как) записи в файл - C++
вот как я хотел сделать запись в файл перегрузкой #pragma once #include &quot;iostream&quot; #include &quot;conio.h&quot; #include &quot;fstream&quot; class...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.12.2012, 18:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru