下面是将给定的C#方法转换为使用TinyXML2库的C++代码示例:
#include <tinyxml2.h>
void SetNodeValue(const std::string& nodePath, const std::string& nodeName, const std::string& nodeValue, tinyxml2::XMLDocument& doc)
{
tinyxml2::XMLNode* node = doc.FirstChildElement(nodePath.c_str());
if (node != nullptr)
{
tinyxml2::XMLElement* element = node->FirstChildElement(nodeName.c_str());
if (element != nullptr)
{
element->SetText(nodeValue.c_str());
}
}
}
// 示例用法
int main()
{
std::string xmlString = R"(
<root>
<parent>
<child>old value</child>
</parent>
</root>
)";
tinyxml2::XMLDocument xmlDoc;
xmlDoc.Parse(xmlString.c_str());
SetNodeValue("root/parent", "child", "new value", xmlDoc);
// 将修改后的XML内容输出到字符串
tinyxml2::XMLPrinter printer;
xmlDoc.Print(&printer);
std::cout << printer.CStr() << std::endl;
return 0;
}
上述示例使用了TinyXML2库来解析和处理XML文档。首先,我们定义了一个名为SetNodeValue的函数,它接受节点路径、节点名称、节点值以及TinyXML2的XMLDocument对象作为参数。然后,我们使用FirstChildElement()方法获取目标节点,并通过调用SetText()方法来设置新的节点值。
请确保在编译时链接并包含适当版本的TinyXML2库,并根据需要进行适当的错误处理和异常处理。
内容由零声教学AI助手提供,问题来源于学员提问




