Question

Je veux analyser une sorte (ou pur) code XML à partir d'un QString.

Mon QString est comme:

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

Je veux obtenir 2 chaînes:

chat et Mon chat est très agréable.

Je pense que un analyseur XML est peut-être pas nécessaire, mais à l'avenir je vais avoir plus de balises dans la même chaîne de sorte qu'il est aussi un point très intéressant.

Était-ce utile?

La solution

Dans Qt, vous avez la classe QRegExp qui peut vous aider à analyser votre QString.

Selon l'exemple de Documentation:

 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."
 }

La liste des QStringList contiendra le cat et My cat is very nice.

Autres conseils

Vous pouvez utiliser un <a>(.*)</a>(.*) d'expression régulière.

Si vous utilisez Boost vous pouvez le mettre en œuvre comme suit:

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 );
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top