0

我正在尝试使用一些简单的 C++ 解析 xml,其中包含类似的块

 <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;

        }

     }
}

谢谢

亚历克斯

4

1 回答 1

0

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

如果出于某种原因您不能,并且您正在阅读的内容总是与您的示例中的内容完全相同,没有其他格式变化,您还应该使用find()来检测块的结尾:

else if(line.find("</mgrwt>")<=line.size())
{
   begin_tag = false;
}
于 2012-12-16T15:00:01.557 回答