Frage

Ich möchte von einem QString eine Art (oder rein) XML-Code analysieren.

Mein QString ist wie:

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

Ich möchte 2 Strings erhalten:

Katze und Meine Katze ist sehr schön.

Ich denke, ein XML-Parser nicht vielleicht notwendig, aber in Zukunft werde ich mehr Tags in der gleichen Zeichenfolge hat, so ist es auch ein sehr interessanter Punkt.

War es hilfreich?

Lösung

In Qt haben Sie die QRegExp Klasse, die Sie helfen können, analysieren QString.

Nach Dokumentation Beispiel:

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

Die QStringList Liste enthält die cat und My cat is very nice.

Andere Tipps

Sie können einen regulären Ausdruck <a>(.*)</a>(.*) verwenden.

Wenn Sie Boost verwenden Sie könnte es implementieren wie folgt:

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 );
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top