Удалить все теги xml из std :: string

у меня есть std::string xmlString = "<out><return>Hello</return></out>" и я хочу
удалить все теги! (без дополнительной библиотеки, кроме tinyXML -> уже загружен)

результат -> Привет

Спасибо

3

Решение

Если ваш компилятор и стандартная библиотека поддерживают новый C ++ 11 регулярных выражений вы могли бы использовать std::regex_replace.

Есть и другие библиотеки регулярных выражений, которые вы можете использовать.

Если вы не хотите использовать регулярные выражения, вы можете вручную скопировать строку, одновременно проверяя наличие «тегов». Когда вы видите '<' просто продолжайте цикл без копирования, пока не увидите '>',

3

Другие решения

Возможное решение:

std::string ClassA::ParseXMLOutput(std::string &xmlBuffer)
{
bool copy = true;
std::string plainString = "";
std::stringstream convertStream;

// remove all xml tags
for (int i=0; i < xmlBuffer.length(); i++)
{
convertStream << xmlBuffer[i];

if(convertStream.str().compare("<") == 0) copy = false;
else if(convertStream.str().compare(">") == 0)
{
copy = true;
convertStream.str(std::string());
continue;
}

if(copy) plainString.append(convertStream.str());

convertStream.str(std::string());
}

return plainString;
}
3

Если вы уже используете tinyXML, выполните итерацию по всем узлам в первую очередь и добавьте текст узла в строящуюся строку. Есть несколько ответов о том, как это сделать, т.е. TinyXML Итерация по поддереву

0
По вопросам рекламы [email protected]