2

我想做与这个问题中的人完全相同的事情。

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

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

我想要子元素的xml,例如

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

我不在乎空格。问题是从另一个问题接受的答案似乎已经过时,因为 XMLElement 对象没有“打印”方法。我可以用 TinyXml2 做到这一点吗?

4

1 回答 1

1

我编写了以下对我有用的函数。请注意它可能有错误——我正在使用非常简单的 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(">");
}
于 2015-01-02T18:02:19.987 回答