解析并删除部分QString

时间:2010-08-27 07:06:07

标签: c++ xml parsing qt qstring

我想从QString中解析某种(或纯粹的)XML代码。

我的QString就像:

<a>cat</a>My cat is very nice.

我想获得2个字符串:

我的猫非常好。

我认为XML解析器可能不是必需的,但将来我会在同一个字符串中有更多的标签,所以它也是一个非常有趣的点。

2 个答案:

答案 0 :(得分:6)

在Qt中,你有QRegExp类可以帮助你解析你的QString。

根据文档示例:

 QRegExp rxlen("^<a>(.*)</a>(.*)$");
 int pos = rxlen.indexIn("<a>cat</a>My cat is very nice.");
 QStringList list
 if (pos > -1) {
     list << = rxlen.cap(1); // "cat"
     list << = rxlen.cap(2); // "My cat is very nice."
 }

QStringList列表将包含catMy cat is very nice.

答案 1 :(得分:3)

您可以使用正则表达式<a>(.*)</a>(.*)

如果你使用Boost,你可以按照以下方式实现它:

boost::regex exrp( "^<a>(.*)</a>(.*)$" );
boost::match_results<string::const_iterator> what;
if( regex_search( input_string, what, exrp ) ) {
    std::string tag( what[1].first, what[1].second );
    std::string value( what[2].first, what[2].second );
}