解析xml并在文件中转储每个<>块

时间:2012-12-16 12:50:35

标签: c++ xml-parsing

我试图用一些简单的C ++来解析xml,这个C ++有像

这样的块
 <mgrwt event="1">
    ...
    ...
    ...
    </mgrwt>

<mgrwt event="2">
    ...
    ...
    ...
 </mgrwt>

现在,我有一个bash脚本作用于每个块 - 所以,我的问题是,我如何在xml内循环(我不需要RapidXML或类似的东西),以便轻松转储到一个小临时文件每个块?

我的解析器看起来像

  bool begin_tag = false;
    while (getline(in,line))
    {
        std::string tmp; 
        tmp=line;
       if(line.find("<mgrwt event=")<=line.size()){
            cout<<line<<endl;
            begin_tag = true;
            continue;
        }
        else if (tmp == "</mgrwt>")
        {
            begin_tag = false;

        }

     }
}

感谢

Alex

1 个答案:

答案 0 :(得分:0)

我建议使用XML解析器来读取XML文件。结帐expatPOCO XML或其他图书馆。

如果您出于任何原因无法理解,并且您正在阅读的内容看起来与您的示例中的内容完全相同而没有其他格式变化,那么您还应该使用find()来检测块的结尾:

else if(line.find("</mgrwt>")<=line.size())
{
   begin_tag = false;
}