使用TinyXml2提取子树XML字符串

时间:2014-12-31 20:28:53

标签: c++ xml tinyxml2

我想和this question中的那个人完全一样。

我想将XML子元素(及其所有子元素)转换为XML字符串,因此如果XML结构是

<parent>
    <child>
        <value>abc</value>
    </child>
<parent>

我想要子元素的xml,例如

<child>
    <value>abc</value>
</child>

我不在乎空白。问题是来自另一个问题的accepted answer似乎已过时,因为没有&#34; Print&#34; XMLElement对象的方法。我可以用TinyXml2吗?

1 个答案:

答案 0 :(得分:0)

我为我编写了以下功能。请注意,它可能有错误 - 我正在使用非常简单的XML文件,因此我不会假装我已经测试了所有案例。

void GenXmlString(tinyxml2::XMLElement *element, std::string &str)
{
    if (element == NULL) {
        return;
    }

    str.append("<");
    str.append(element->Value());
    str.append(">");

    if (element->GetText() != NULL) {
        str.append(element->GetText());
    }

    tinyxml2::XMLElement *childElement = element->FirstChildElement();
    while (childElement != NULL) {
        GenXmlString(childElement, str);
        childElement = childElement->NextSiblingElement();
    }

    str.append("</");
    str.append(element->Value());
    str.append(">");
}