0

我正在尝试通过 C++ 将基本 txt 文件中的一些数据输入 XML 文件。我了解如何编写标签,但是如何从硬编码到添加一些动态列表?我正在使用这个类来帮助我。

#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"; 
}
4

1 回答 1

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
于 2014-12-06T18:07:28.460 回答