Я пытаюсь передать некоторые данные из основного текстового файла в файл 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";
}
Вам нужно направить этот вывод в 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