我试图通过C ++将基本txt文件中的一些数据提供给XML文件。我理解如何编写标签,但是如何从硬编码到添加一些动态列表?我正在使用this课来帮助我。
#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 :(得分: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