从 std::string 中删除所有 xml 标记
Remove all xml tags from a std::string
我有一个std::string xmlString = "<out><return>Hello</return></out>"
,我想删除所有标签!(没有额外的库,除了tinyXML ->已经加载)
结果 -> 你好
感谢
如果您的编译器和标准库支持新的 C++11 正则表达式,则可以使用 std::regex_replace
.
您还可以使用其他正则表达式库。
如果您不想使用正则表达式,则可以手动复制字符串,同时检查"标签"。当您看到'<'
时,只需继续循环而不复制,直到看到'>'
。
可能的解决方案:
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;
}
如果您已经使用 tinyXML,请深度优先遍历所有节点,并将节点的文本附加到您正在构建的字符串中。关于如何做到这一点,SO有一些答案,即TinyXML迭代子树
相关文章:
- 结束标记 xml 验证在提升 ptree 读取 xml 中不正确
- 在 qt 中解析 XML 并获取树标记结构
- 更改命名空间以自定义 Boost XML 的标记名称后的反序列化问题
- 提取 XML 标记中双 qoutes 之间的子字符串
- 使用 Boost c++ 解析嵌套标记的 xml
- 如何在不使用 C/C++ (Windows) 中的 DOM 的情况下检查 XML 文件中的标记
- 解析 XML 时出错:标记 XOSP 不匹配
- gSOAP从2.8.10升级到最新版本(2.8.54),在几个XML标记上没有ns:for命名空间
- 从 std::string 中删除所有 xml 标记
- 标准化XML文件标记命名,然后对值进行处理
- 在 vim 中自动关闭 C/C++ 文件中的 xml 标记
- 有没有办法修改样式表,以便它将带有空标记的 XML 文档转换为 <tag />?
- C++/QtQDomDocument:遍历所有XML标记
- 如何在 XML 文本(在标记内)中搜索换行符
- 使用Xerces C++过滤连续XML标记之间的格式化字符
- 使用QDomElement浏览XML标记
- 无法读取嵌套 xml 标记的属性 (QXmlStreamReader)
- 如何使用FirstCHildElement从xml标记中获取值
- 在 Qt 中更改 XML 标记的属性值
- 如何在cmarkup生成的xml标记中添加更多细节