Как я могу передать данные через цикл в XML-файл из текстового файла в C ++?

Я пытаюсь передать некоторые данные из основного текстового файла в файл XML через C ++. Я понимаю, как писать теги, но как мне перейти от жесткого кодирования к добавлению динамического списка? я использую этот класс, чтобы помочь мне.

#include <fstream>
#include <iostream>
#include <string>
#include "xmlwriter.h"
using namespace std;
using namespace xmlw;

int main()
{
ofstream f("output.xml");
XmlStream xml(f);

xml << prolog() // write XML file declaration

<< tag("blocks")
<< attr("version") << "1"<< attr("app") << "Snap! 4.0, http://snap.berkeley.edu"
<< tag("block-definition")
<< attr("category") << "sensing"<< attr("type") << "command"<< attr("s") << "data reporter"
<< tag("header") << endtag()
<< tag("code") << endtag()
<< tag("inputs") << endtag()

<< tag("script")
<< tag("block")
<< attr("s") << "doSetVar"<< tag("l")
<< chardata() << "datalist"<< endtag()

<< tag("block")
<< attr("s") << "reportNewList"
<< tag("list")

insertdata();<< endtag("block-definition"); // close all tags up to specified

// look: I didn't close "sample-tag", it will be closed in XmlStream destructor

return 0;
}

void insertdata(){
string line;
ifstream myfile ("DATALOG.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
<< tag("l")
<< chardata() << line
<< endtag()
}
myfile.close();
}

else cout << "Unable to open file";
}

0

Решение

Вам нужно направить этот вывод в insertdata () на объект xml:

  << tag("l")
<< chardata() << line
<< endtag()

Один из способов сделать это — передать ссылку на xml в качестве параметра:

void insertdata(XmlStream &x) {
...
x << tag("l")
<< chardata() << line
<< endtag();
...

Затем вызовите его соответствующим образом в main ():

    ...
<< tag("list");

insertdata(xml);

xml << endtag("block-definition"); // close all tags up to specified
0

Другие решения


По вопросам рекламы [email protected]